2017-05-08 262 views
0

我如何写一个正则表达式匹配某物像那:正则表达式,省略几个字

他是

能够不能的

一般模式“他是”+多达几个字+ “的”

我知道如何解决它没有正则表达式,但也许有更简单的方法

+1

你已经尝试了什么? –

+0

没有正则表达式,你的解决方案是什么?你到底用了什么正则表达式? – f1sh

+0

我的解决方案是找到模式“他是”和“的”索引,并检查之间有多少个字符,但它需要循环 – Yeynno

回答

0

我这个去:

\bhe is\b.*\bof\b 

我使用\b了很多,以确保我匹配的词。例如。这将不匹配She is capable of,既不he isa wizard capable of

这是一个有点复杂:

\bhe is\b(+\w+ *)*\bof\b 

在这里,我们中间有(+\w+ *)*。这可以确保它相互匹配。

你可以玩演示here

1

如果你真的想检查是否存在能够或不capatable。

"he is\\s+(not\\s+)?(capable\\s+)?of" 
2

甲平凡解是使用

\bhe is(?: \w+){1,3} of\b 

其允许he isof之间的一个和三个 “字” 之间。

\w+表示“字母/数字/下划线的序列”,因此它不完全匹配一个单词,但是如果那个单词太不确定,您可以替换您自己的单词匹配正则表达式。

\bword boundary anchors用于仅匹配heof和不theoften