Regex 正则表达式-保留长度为10-13位的所有数字
搜索regex,其中保留长度为10-13位的所有数字,并在记事本中删除其余数字++ 我的正则表达式不起作用 [^\d{10,13}]Regex 正则表达式-保留长度为10-13位的所有数字,regex,notepad++,Regex,Notepad++,搜索regex,其中保留长度为10-13位的所有数字,并在记事本中删除其余数字++ 我的正则表达式不起作用 [^\d{10,13}] 它也会查找带有逗号的数字:(我不知道记事本是如何工作的,但我想这就是您要查找的正则表达式:^([0-9]){10,13}$ 创建/测试正则表达式的好页面:以匹配长度不完全为3位数的数字: \b(\d{1,9}|\d{14,})\b 寻找 ^(?:.*?(\d{10,13}).*|.*)$ ^\n 并替换为 \1 \1 您只保留10到13位的长数字(和空行
它也会查找带有逗号的数字:(我不知道记事本是如何工作的,但我想这就是您要查找的正则表达式:^([0-9]){10,13}$ 创建/测试正则表达式的好页面:以匹配长度不完全为3位数的数字:
\b(\d{1,9}|\d{14,})\b
寻找
^(?:.*?(\d{10,13}).*|.*)$
^\n
并替换为
\1
\1
您只保留10到13位的长数字(和空行)
删除搜索的空行
^(?:.*?(\d{10,13}).*|.*)$
^\n
什么都没有取代
查看它的实际操作:
解决@WiktorStribiżew的评论:依靠总是被空格包围的受欢迎的数字(这已经被OP检查过了,但不是针对潜在的情况,行(实际上)只包含数字),搜索表达式可以调整为
^(?:.*\s(\d{10,13})\s.*|.*)$
仍在替换为
\1
\1
要正确处理包含数字字符串的逗号,请执行以下操作:
顺便说一下:
[^\d{10,13}]
是一个字符类,它匹配而不是的任何内容:
- 一个数字,或者
- “{10,3}”之外的任何字符(不带引号,但包括大括号)
如果需要调整/进一步详细信息,请发表意见。您可以找到所有10-13长度的独立数字,如下图所示
(
然后由您决定要做什么。您想删除所有数字长度超出10-13范围的数字吗?两个表达式会更简单,一个:\b\d{1,9}\b
和另一个\b\d{14,}\b
问题在于,它查找带有逗号的数字,或者您希望它不查找带有逗号的数字?每行是否有一个数字?数字是否可以包含逗号?删除所有并仅保留长度为10-13的数字。每行可以包含10-13的长数字和其他内容,如文本或短数字。此方法假定只有一个数字一行上有10-13个数字块。@WiktorStribiżew:这就是我如何理解OP的上述注释“[…]每行可以包含10-13个长数字和其他内容,如文本或短数字”那你怎么解释它呢?你会在1212345678901
中找到一个1234567801
。你不需要正则表达式来删除空行,有一个菜单项。你可能想使用\R
来匹配任何换行序列,而不是在^\n
@WiktorStr中使用\n
伊比昂:你是对的——尽管我(主要)理解它是对OP自己尝试的批评——但它可能需要解决。