如果我有一个句子,并且希望在一个特定单词之前显示一个单词或所有单词,例如,我想在fox
brown
之后显示单词The quick brown fox jumps over the lazy dog
,我知道我可以积极看待(?<=brown\s)(\w+)
但是我不太理解实例(?<=\bbrown\s)(\w+)
中\ b的使用。我正在使用http://gskinner.com/RegExr/作为测试仪。
最佳答案
\b
是带断言的零。这意味着它与一个字符不匹配,它与一个位置匹配,一个位置在左侧,另一个在右侧。
单词边界\b
在从\w
(单词字符)到\W
非单词字符或从\W
到\w
的更改上匹配\w
中包含哪些字符取决于您的语言。至少有所有ASCII字母,所有ASCII数字和下划线。如果您的正则表达式引擎支持unicode,则可能是\w
中所有具有unicode属性字母或数字的字母和数字。\W
是所有字符,不在\w
中。
\bbrown\s
将在这里匹配
The quick brown fox
^^
但不在这里
The quick bbbbrown fox
因为在b和brown之间没有单词边界,即从非单词字符到单词字符都没有变化,所以两个字符都包含在
\w
中。如果您的正则表达式出现在
\b
上,则继续进行下一个字符,即b
从棕色开始。现在\b
知道右侧的含义,单词char ==> b
。但是现在需要回头,以使\b
变为TRUE,在b
之前必须有一个非文字字符。如果有空格(不在\w
中),则\b
之前的b
为true。但是如果还有另一个b
,则其为false,然后\bbrown
与“ bbrown”不匹配正则表达式
brown
将匹配字符串“ quick brown”和“ bbrown”,其中正则表达式\bbrown
仅匹配“ quick brown”,而不匹配“ brown”有关更多详细信息,请参见此处www.regular-expressions.info
关于regex -\b在使用正则表达式时如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7605198/