正则表达式删除任何不是14位数的内容,后跟空格

时间:2016-04-18 14:11:37

标签: regex notepad++ regex-negation regex-lookarounds

我试图反转这个表达式:([0-9]{14} ), 所以所有14位数字后跟一个空格。

我到处寻找,似乎最好的方法是使用否定前瞻
但是,当我尝试将q(?!u)应用于我的案例>> (?!([0-9]{14} )),它不起作用。

我做错了什么?

我会提出任何建议,谢谢。

重点是删除所有不是14位数文本块的内容,同时保留这些14位数字块。

2 个答案:

答案 0 :(得分:2)

如果您要删除14位以外的文字,后跟空格,请使用(\b\d{14} )|.并替换为$1

模式匹配并且捕获(我们可以参考用替换模式中的backreference捕获的文本)14位数字块然后将空格作为整个单词归因于{ {3}}。如果找不到此文本,则除了换行符之外的任何字符都与.匹配且未被捕获(我们无法通过反向引用来引用它)。

因此,当我们用反向引用$1替换时,我们只是用空格恢复匹配的14位数块。

请参阅\b (a word boundary)

regex demo at regex101.com

要获得更清晰的视图,请删除所有空行:Edit> Line Operations> Remove Empty Lines

答案 1 :(得分:0)

您可以使用此否定前瞻:

</question>
  • 确保使用起始锚</Turn>
  • 在您的模式之前使用^(?!.*[0-9]{14} ) 以在输入中的任何位置禁用此内容也很重要