我正在尝试用正则表达式将字符串与最后一个单词的“ nth”处的特定字符串匹配。
在这种情况下,倒数第二个单词中包含字符串“ call”的单词。
我尝试过的最成功的事情:
/.*(?=.*call.*)(\w+)\s(\w+)$/
我得到的响应以及我正在寻找的东西:
有什么建议吗?
您的主要问题是您正在使用先行方式(?=...)
,这使事情变得混乱。这与您的正则表达式匹配,然后必须紧跟单词call
。也许你的意思是使用非捕获组:(?:...)
?
/.*(?:.*call.*)(\w+)\s(\w+)$/
您实际上并不需要它,因为未分组的内容也不会捕获:
/.*call.*(\w+)\s(\w+)$/
更改后,您遇到的问题是,在“调用”之后,您要匹配“任意次数的任意字符,后跟1个或多个单词字符,然后是空格和1个或多个单词字符”。
那将匹配:
只要结尾有两个,就用很多单词来呼叫
但不是:
打电话给我
因为通话后至少不会有两个字。
我认为您想匹配以“ call后跟任意数量的单词字符,空格和任意数量的单词字符”结尾的字符串:
/.*call(\w*)\s(?:\w+)$/
如果确实要匹配“ call”和后续单词,则可以适当地更改捕获/非捕获组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句