【问题标题】:C# RegEx match beginning of string and beginning of word simultaneouslyC# RegEx同时匹配字符串的开头和单词的开头
【发布时间】:2010-10-24 06:52:05
【问题描述】:

假设有六个字符串

  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 字符之前的空格 :(,这不好)

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

有没有办法将用户输入的表达式转换为将“^abc[^e]”和“\Wabc[^e]”表达式组合在一起的正则表达式(理想情况下,第二个表达式与第一个空格不匹配:))

【问题讨论】:

  • 你试过:“(^abc[^e]|\Wabc[^e])”吗?或者只是“(^|\W)abc[^e]”? (因为没试过,所以用评论代替回答)
  • 我认为它也不应该匹配'aaaabcd'
  • lassevk 这让我的生活更轻松了 :)。如果我只能让 \W 不开始与空格匹配,那么此刻它匹配“abcd”

标签: c# .net regex


【解决方案1】:

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

\babc[^e]

我认为它应该适用于大多数 Perl 风格的正则表达式引擎。

【讨论】:

  • 完美运行。谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多