我有一个如下所示的正则表达式:
(?<Number>\d{3})-?(?<Hand>R?L?)[-\s]?(?<Description>.*?)?(?<ShnOpp>SHN|OPP)?$
带有一些示例数据:
104-RL-BLAH BLA SHN
104-RL FOO OPP
102-RL-BAR WL74
102-BAR WL74
102-R-BAR WL74 SHN
102-R-BAR WL74 OPP
因此,命名组Hand
可以包含RL|R|L|{Blank}
。
但是,当且仅当Hand="RL"
我想将ShnOpp
与SHN|OPP
匹配时,否则将其保留为描述的一部分。因此,我可以在正则表达式中执行文字IF
条件吗?
我的Google搜寻技巧使我失败了,或者也许您做不到,但我很想证明自己是错的。
以下是工作示例的链接:https://regex101.com/r/wGghbV/2
答案 0 :(得分:0)
您不能使用条件语句来检查某个组是否捕获了一个准确的文本,但是可以在此处通过添加仅与RL
匹配的新组来使用条件语句:
(?<Number>\d{3})-?(?<Hand>(?<RL>RL)|[RL]?)[ \-]?(?<Description>.*?)[ \-]?(?(RL)(?<ShnOpp>SHN|OPP)?)$