我正在尝试修复用于lita的chatops机器人的正则表达式。我有以下正则表达式:
/^(?:how\s+do\s+I\s+you\s+get\s+far\s+is\s+it\s+from\s+)?(.+)\s+to\s+(.+)/i
这应该捕获“到”之前和之后的单词,前面带有可选单词,这些单词可以构成以下问题:我如何从x到y,从x到y多远,从x到y多远。
预期输出:
match 1 : "x"
match 2 : "y"
在大多数情况下,我的可选字词都可以正常工作。但是,当我进行响应匹配时,就会得到包含第一个捕获组的单词。
因此,how far is it from sfo to lax
应返回:
sfo
和lax
。
而是返回:
how far is it from sfo
和 lax
您的故障是正则表达式的第一部分没有意义。
要从多个选项中进行选择,请使用以下语法:
(a|b|c)
我认为您正在尝试执行以下操作:
/^(?:(?:how|do|I|you|get|far|is|it|from)\s+)*(.+)\s+to\s+(.+)/i
regexp表示跳过所有选项中的所有单词,无论顺序如何。
如果要保留字序,则可以使用正则表达式,例如此伪代码:
… how (can|do|will) (I|you|we) (get|go|travel) from …
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句