正则表达式匹配除模式

时间:2016-06-28 01:35:14

标签: java regex

我来自this question。现在我想要的恰恰相反。 我希望匹配除此模式之外的所有字符:

yearid="[0-9]+"

为什么我这样做?

我尝试了(?!yearid="[0-9]+"),但拒绝匹配匹配。

2 个答案:

答案 0 :(得分:2)

实际上有两种方法可以做到这一点。您可以[^0-9]+使用^否定括号内的术语,\D+ \D其中struct CStruct { char item[10]; }; 是非数字字符。

答案 1 :(得分:0)

re.sub(r'yearid="[0-9]+"', '', string_to_fix)

像正常一样捕获组,然后不替换它,并返回完整的字符串。

或者,如果你想要努力并且否定它:

re.sub(r'(.*?)(?:yearid="[0-9]+")(.*)', '\1\2', string_to_fix)

首先匹配所有内容(.*?),直到找到yearid="XXXX",将其作为非捕获组(?:yearid="[0-9]+")匹配,然后匹配其他所有内容(.*)。最后,它只用第一和第二个捕获组替换原始的完整字符串,基本上切掉了你想要的部分。