我希望以这样的方式匹配句子:句子中的单词可以是任何顺序,但句子应该是相同的顺序。
e.g。
我叫萨姆。我喜欢正则表达式。
可接受的输入:
My Sam is name. regex I love.
name is My Sam. I regex love.
输入无效:
I love regex. My name is Sam.
regex I love. is My name Sam.
示例正则表达式我到目前为止已经解决了上述问题
^((?=.*\bMy\b)(?=.*\bSam\b)(?=.*\bis\b)(?=.*\bname\b))((?=.*\bregex\b)(?=.*\bI\b)(?=.*\blove\b)).*$
哪个没有按预期工作。
正则表达式可以解决这个问题吗?建议的解决方法是什么?
注意:请忽略.
我为了清楚起见而使用它。
答案 0 :(得分:0)
我认为你正在寻找除正则表达式之外的其他东西。如果您想要这样做,最有效的方法是比较一系列预期的单词并检查'如果它们都出现在一个句子中。这完全取决于您使用的上下文。如果你需要一个字面上找到你在你的例子中所说的正则表达式,你可以使用像this这样的东西:
/(My|name|is|Sam) (My|name|is|Sam) (My|name|is|Sam) (My|name|is|Sam)\. (I|love|regex) (I|love|regex) (I|love|regex)./g
但正如你所看到的,这个正则表达式会随着你的句子所用的单词越多而呈指数级增长。而且,与用其他东西解析它相比,效率非常低。
答案 1 :(得分:0)
我无法使用单个正则表达式实现,而是执行了以下操作:
将句子实际划分为多个区块。
维持句子块 - >正则表达式配置。