【发布时间】:2010-10-24 06:52:05
【问题描述】:
假设有六个字符串
- “abcd bbb ccc”
- “abce bbb ccc”
“abcf bbb ccc”
“aaa abcd ccc”
- “aaa abce ccc”
- “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”