我正在尝试在RegEx(C#)中实现以下功能:
模式应与单词匹配(例如aaa)。这个单词可以有一个前缀,可以是三个选项之一(比如a,b,c)。
问题是,我正在寻找的单词可以是前缀+其他单词的组合。例如,单词aaaa是一个单独的单词,但也是前缀a和单词aaa。
我可以使用哪种模式,以便像这样的单词(aaaa)匹配单词,而不是前缀+短单词?
我现在使用的模式是:
(?<prefix>a|b|c)?(?<word>aaa|aaaa)
但是,如上所述,此模式将aaaa与带有前缀'a'的'aaa'字匹配。
谢谢!
答案 0 :(得分:0)
您应该可以通过添加空前缀来执行此操作,只需在第一个实际前缀之前添加|
:
(?<prefix>|a|b|c)(?<word>aaaa|aaa)
当然,使用空前缀,您不再需要使您的前缀组可选,因为它将尝试匹配的第一件事是空前缀。
请注意,我也改变了你的单词的顺序(aaaa
之前的aaa
),一般情况下,如果你在一个交替中有多个表达式,其中一个是另一个的前缀,你想放置先长一点。