匹配前的一个单词可以是一组任何符号......例如“D.E,F /".
我有正则表达式:
@"\s*[\w/]+\s+XXX"
输入示例:这是KKK M.D,D / xXx PPP
输出示例:这是KKK PPP
所以我需要在XXX之前删除1个单词,同时删除XXX(忽略大小写)。
答案 0 :(得分:2)
请注意,D.E,F/
不是单词,而是一系列非空白字符。 [\w/]+
是一个匹配单词和/
字符的字符类,如果你打算在这里进一步添加字符,那么这个模式可能会变得太长而且很麻烦。
使用\S+
模式匹配除空白之外的任何1个字符似乎更方便:
\s*\S+\s+XXX
请参阅regex demo。使用RegexOptions.IgnoreCase
执行不区分大小写的匹配,或在模式前添加(?i)
内联修饰符。
在C#中:
var result = Regex.Replace(s, @"(?i)\s*\S+\s+XXX", string.Empty);
模式详情
(?i)
- 不区分大小写的内联修饰符\s*
- 0+空白字符\S+
- 1 +非空白字符\s+
- 1+空白字符XXX
- XXX
子字符串。