Regex 正则表达式-保留长度为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位的长数字(和空行

搜索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位的长数字(和空行)

删除搜索的空行

^(?:.*?(\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自己尝试的批评——但它可能需要解决。