))大家好,我想创建一个这种语法的regEx条件(?(正则表达式)然后| else)请一个正则表达式。 这是我的字符串......
cook, eat, write, play
目前正在使用此正则表达式
(, )?write
...并将其替换为"" (没什么,只是删除它)
为了删除"写字"和#34;逗号和空格"可能会或可能不会出现在它之前。所以申请后我得到这个字符串...
cook, eat, play
但如果我想删除第一个单词" cook"在使用相同正则表达式(, )?cook
的字符串中,我会得到这个尴尬的结果......
, eat, write, play
所以,我想创建一个可以检查的正则表达式条件... 如果在字符串的开头找到匹配,则删除之前的匹配,但也删除以下"逗号和空格"所以它给出了结果......
eat, write, play
如何创建条件?或者是其他更好的正则表达式吗? 请注意我使用的宏自动化工具只允许我使用正则表达式替换文本,我不能用任何可以取代正则表达式的语言进行编程。请我只需要一个Regex解决方案,我只使用这个.NET Regex测试器。 http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
谢谢高级。
答案 0 :(得分:1)
我希望它更复杂,但如果你必须有条件,
它(表达):@"(?(^)write,[ ]|,[ ]write)"
(?( ^ ) # Conditional, is at BOS ?
write, [ ] # Yes, this form
| # else
, [ ] write # No, this form
) # end conditional.
但是,如果没有条件:@"^write,[ ]|,[ ]write"
^ write , [ ]
|
, [ ] write
但是,使用条件可能会更复杂。 @"(?>(^)?)(?:,[ ])?write(?(1),[ ])"
(?>( ^ )?) # (1), Optional BOS, with atomic group
(?: , [ ] )? # Optional comma space for all
write # 'write'
(?(1) , [ ] ) # Conditional, if group 1 matched,
# then match the space comma after
# otherwise, don't match anything else.