如何用正则表达式捕获字符串“word1 / word2 / *”?

时间:2014-03-10 18:03:15

标签: regex

我需要构建一个接受以下模式的正则表达式:

WORD1 / WORD2 / *

WORD1 / *

“word2”是可选的,它需要以“/*”。

结尾

我试过这个正则表达式:

 (word1)/(word2)?/\*

它匹配此输入: word1 / word2 / *

但不是这样: word1 / *

3 个答案:

答案 0 :(得分:2)

试试这个:

word1(?:/word2)?/\*

(?: )构造是非捕获组。后面的?表示“前一个原子的零或一个”。因此,这匹配word1可选地后跟/word2,然后是最后的斜杠和星号。

(我假设你要匹配的字面星号,而不是“任何字符”中的通配符星号;如果是你想要的后者,请用\*替换.*。)

(如果需要,您可以将捕获论坛()重新放回word1word2。)

答案 1 :(得分:0)

您需要将第一个/移动到以下捕获组(带括号的子表达式)中:

(word1)(/word2)?/\*

如果您想在没有word2的情况下捕获/,请引入其他捕获组:

(word1)(/(word2))?/\*

根据您的环境,可能有更复杂的解决方案可以避免额外的捕获组(非捕获组,环视断言)。

答案 2 :(得分:0)

我有另一个答案,我相信它更精益。

(((word)(1|2)/){1,2}\*)

更少的代码,尝试一下。