正则表达式词边界与特殊字符

2024-04-28 15:34:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个正则表达式来转义搜索字符串中的所有特殊字符。这工作很好,但我似乎无法让它与文字界限。例如,用干草堆

add +

或者

add (+)

还有针

+

正则表达式/\+/gi与“+”匹配。但是正则表达式/\b\+/gi没有。关于如何使其工作的任何想法?

使用

add (plus)

作为haystack和/\bplus/gi作为regex,它匹配得很好。我只是不明白为什么逃逸的角色有问题。


Tags: 字符串add角色plusregex文字haystackgi
3条回答

尝试将其更改为:

/\b\s?+/gi

编辑:

尽可能扩展这个概念。如果要在任何单词边界后使用第一个+号:

/\b[^+]*+/gi

边界是非常有条件的断言;它们锚定的东西取决于它们接触的东西。请参阅this answer以获得详细的解释,以及您还可以做些什么来处理它。

\b是一个零宽度断言:它不使用任何字符,只是断言某个条件在给定位置保持不变。单词边界断言位置前面有一个单词字符而后面没有一个,或者后面跟着一个单词字符而前面没有一个。(单词字符是字母、数字或下划线。)在字符串中:

add +

…开头有一个单词边界,因为a前面没有单词字符,第二个d后面有一个,因为后面没有单词字符。regex(/\b\+/)中的\b试图在空间和+之间进行匹配,这是不起作用的,因为这两个字符都不是单词字符。

相关问题 更多 >