我想有一个正则表达式来查找一个短语和两个单词,如果有两个单词的话。 例如,我有一个字符串(每行一个句子):
Chevy is my car and Rusty is my horse. My car is very pretty my dog is red.
如果我使用正则表达式:
re.finditer(r'[\w+\b|^][\w+\b]my car',txt)
我找不到匹配的。在
如果我使用正则表达式:
^{pr2}$我得到了: “是我的车”还有。我的车'(我忽略案件和使用多线)
为什么带有\w+\b的正则表达式找不到任何内容?应该有两个词和“我的车” 如果在“我的车”之前有两个词,我怎么能得到两个完整的单词呢。如果我的车前面只有一个字,我应该会明白的。如果前面没有文字,我只能得到'我的车'。在我的字符串示例中,我应该得到:“雪佛兰是我的车”和“我的车”(这里没有前面的单词)
在您的}和{}匹配1个符号,该符号可以是单词字符、
r'[\w+\b|^][\w+\b]my car
正则表达式中,[\w+\b|^]
匹配1个符号,该符号可以是单词字符、+
、backdpace、|
或{+
,或者是退格符。在关键是在字符类中,量词和许多(但不是所有的)特殊字符匹配文字符号。E、 g.}。由于要匹配序列,因此需要在字符类之外提供一系列子模式。在
[+]
匹配加号,[|^]
匹配|
或{似乎您打算使用
\b
作为单词边界,但是,字符类中的\b
只匹配一个退格字符。在例如,要找到两个单词和“我的车”,可以使用
请参见regex demo(这里,
\S+
匹配一个或多个非空白符号,\s+
匹配1个或多个空白,这两个连续子模式的2次出现将这些符号作为序列进行匹配。在要使
^{pr2}$my car
之前的序列可选,只需使用{0,2}
量词,如下所示:请参见this regex demo(与
re.IGNORECASE
标志一起使用)。见Python demo:详细信息:
(?:\S+[ \t]+){0,2}
-0到2个1+非空白的序列,后跟1+个空格或制表符(也可以用[^\S\r\n]
替换它来匹配任何水平空格,或者{my car
-一个文本my car
。在相关问题 更多 >
编程相关推荐