匹配尽可能多的单词

时间:2013-11-23 03:44:34

标签: java regex string sentence

好的,我知道正则表达式并不是最好用的,但我相信除了编写完整的解析器和语法检查以及所有内容之外,它是最好的。

我想编写一个正则表达式,以便按特定顺序匹配尽可能多的令牌,并编写另一个正则表达式,以便在句子中以任意顺序匹配尽可能多的令牌。

例如,我编写了一个正则表达式,用于按顺序匹配单词,如:

(?=.*?(I|need|your))(?=.*?(help|assistance|support|with|this|regex)).*?(?:\?)

并匹配:

I think I need your help? I need your assistance with this regex? I don't want your support.

但问题是它只匹配第一句中的“我”和“帮助”。 在第二句中,它只匹配“我”和“援助”。

我正试图弄清楚如何让它尽可能多地匹配尽可能多的关键字:

第一句话的“我”,“需要”,“帮助”。 第二句话中的“我”,“需要”,“帮助”,“带”,“此”,“正则表达式”。

但与此同时我不希望它匹配如下:

“需要”,“我”,“有”,“协助”,因为它不符合规定。

有没有办法可以做到这一点?我通常使用http://regex101.com/测试我的正则表达式并使用g作为标志,但我无法弄清楚如何编写这样的正则表达式。

我能够使用"\\b[A-Za-z0-9-_]+\\b"对该句子进行标记。

任何提示?

1 个答案:

答案 0 :(得分:0)

首先使用正则表达式进行标记。然后,您可以检查它是否是带有这些apis https://www.google.com/#q=dictionary+api

之一定义的有效单词