【发布时间】:2015-03-11 15:28:14
【问题描述】:
我需要将字符串与预定义关键字列表进行匹配,并将其捕获在一个组中,因为关键字前面可能有一个可选字符。
示例
允许的关键字:
- 包含
- 开始于
- 等于
- 结束于
可选字符:!
- input value - comment
contains(field,value) // OK
startswith(field,value) // OK
test(field,value) // NOK (test is not a valid keyword)
equals(field,value) // OK
!startswith(field,value) // OK (optional character ! allowed)
!contains(field,value) // OK (optional character ! allowed)
正则表达式
我尝试了以下正则表达式:
(?<action>!?startswith|endswith|contains|equals)\((?<field>\w+),(?<value>\w+)\)
我可以成功捕获组(action、field、value),但正则表达式只允许startswith 的可选字符。我怎样才能将这两个规则分开并仍然捕获完整的关键字?类似capture=(optional ?)(any of the allowed keywords)
【问题讨论】:
-
您能否提供一个您可能正在解析的字符串的示例?
-
(?<action>!?(startswith|endswith|contains|equals))\((?<field>\w+),(?<value>\w+)\) -
@1000000000 在灰色框中。 :)
标签: c# .net regex pattern-matching