C#正则表达式匹配开头的字符串和字开头的同时

问题描述:

说,有六根弦C#正则表达式匹配开头的字符串和字开头的同时

  1. “ABCD BBB CCC”
  2. “ABCE BBB CCC”
  3. “ABCF BBB CCC”

  4. “AAA ABCD CCC”

  5. “AAA ABCE CCC”
  6. “AAA ABCF CCC”

用户输入表述 “<abc[!e]

该表达式被转换为下面的正则表达式 “^ ABC [^ E]”

翻译正则表达式将成功匹配字符串1和3

如果我想匹配字符串4和6的表达式必须被翻译成“\ Wabc [^ e]”(这也会匹配abc chars之前的空格:(不好)

不幸的是用户输入的表达式需要在正则表达式中进行转换,以匹配1,3和4,6字符串。

有没有办法来翻译用户输入的表达式为正则表达式,将结合“^ ABC [^ E]”和“\ WABC [^ E]”表达式(理想情况下第二个表达式将不匹配第一空间:))

+2

你试过了:“(^ abc [^ e] | \ Wabc [^ e])”?或者也许只是“(^ | \ W)abc [^ e]”? (因为我没有尝试过,我使用的是评论而不是答案) – 2009-05-06 18:53:36

+0

我认为它也应该不匹配'aaaabcd' – 2009-05-06 18:57:51

的Perl知道零宽度字边界\ b:

\babc[^e] 

我认为应该在大多数Perl风格的正则表达式引擎的工作。