Regex将从10000以下的数字中删除逗号

Regex将从10000以下的数字中删除逗号,regex,numbers,comma,Regex,Numbers,Comma,我需要一个正则表达式来从10000以下的所有数字中去掉逗号,例如9999但10000、1000000等 这适用于9999,正确忽略10000,但会导致1000000(1000000): 不幸的是,我不能简单地排除像9999这样的4位数字后面的逗号。我尝试了另一种方法,但没有找到9999: \b(?<![.,])(?<d1>\d{2})(?<d2>\d{3})(?!,)\b $1,$2 \b(?\d{2})(?\d{3})(?!,)\b $1,$2 有什么想法吗?

我需要一个正则表达式来从10000以下的所有数字中去掉逗号,例如9999但10000、1000000等

这适用于9999,正确忽略10000,但会导致1000000(1000000):

不幸的是,我不能简单地排除像9999这样的4位数字后面的逗号。我尝试了另一种方法,但没有找到9999:

\b(?<![.,])(?<d1>\d{2})(?<d2>\d{3})(?!,)\b
$1,$2
\b(?\d{2})(?\d{3})(?!,)\b
$1,$2
有什么想法吗? 谢谢 兰迪


更新:抱歉,我忘了提到这必须在.NET中工作,所以\K不起作用…

您只需在正则表达式后插入[0-9]{1-3}

\b([0-9]),([0-9]{3})(,[0-9]{1-3}) 
或者类似于:

\d+((,)\d+)
也可以。

您只需在正则表达式后插入[0-9]{1-3}

\b([0-9]),([0-9]{3})(,[0-9]{1-3}) 
或者类似于:

\d+((,)\d+)

也可以。

要匹配10000以下的数字,可以在逗号前匹配一个数字,而不是2,并在逗号后匹配1-3个数字,例如,也可以匹配1,9

为了防止部分匹配,可以断言空白边界

(?<!\S)(?<d1>\d),(?<d2>\d{1,3})(?!\S)
(?\d),(?\d{1,3})(?!\S)

要匹配10000以下的数字,您可以在逗号前匹配一个数字,而不是2,例如,在逗号后匹配1-3个数字,也可以匹配1,9

为了防止部分匹配,可以断言空白边界

(?<!\S)(?<d1>\d),(?<d2>\d{1,3})(?!\S)
(?\d),(?\d{1,3})(?!\S)
这是我的两分钱:

(?:^(?=(?:,*\d,*){1,4}$)|\G(?!^))\d*\K,(?!$)
在线查看

我的想法是删除任何逗号,不管它在字符串中的什么位置,例如:
,,8
9,,,9
等等,只要最多只有4位数字。

这是我的两分钱:

(?:^(?=(?:,*\d,*){1,4}$)|\G(?!^))\d*\K,(?!$)
在线查看



我的想法是删除任何逗号,不管它在字符串中的什么位置,例如:
,,8
9,,,9
等等,只要最多只有4位数字。

您使用哪种编程语言?更好的马赫数并以编程方式进行比较。对不起,我忘了提到这必须在.NET中工作,所以\K不能工作。您使用哪种编程语言?更好的马赫数并以编程方式进行比较。抱歉,我忘了提到这必须在.NET中工作,所以\K不会工作,但它不会从任何位置删除逗号,而是在我测试它时可能从最后一个位置删除。你把注意力集中在逗号的第二个位置?@JvdV我假设OP的值是从0,0到9999。也许我误解了这个问题。@Randy你可以匹配3位数字而不是1-3
(?\d),(?\d{3})(?!\S)
@Randy你的意思是
1000000
应该变成
1000000
?如果是这样,您可以首先匹配所有数字
(?然后使用此模式
(?您可以使用7或更多
{7,}
之类的量词来指定要首先匹配的位数
(?向上投票,但在我测试它时,除了可能的最后一个位置外,它不会从任何位置删除逗号。你将注意力集中在逗号的第二个位置?@JvdV我假设OP的平均值在0,0到9999之间。也许我误解了这个问题。@Randy你可以匹配3位数字,而不是1-3
(?\d),(?\d{3})(?!\S)
@Randy你是说
1000000
应该变成
1000000
?如果是这样,你可以先匹配所有的数字
(?然后使用这个模式
)(?你可以使用7个或更多的
{7,}
这样的量词来指定你想首先匹配多少个数字
(?啊,我知道你的意思是:-)我认为逗号在问题中标点符号所在的数字之后。在这种情况下+1(并非所有引擎都支持\G和\K)你自己可能是对的。无论如何,我希望我正确地实现了这些。我是通过tw;)@thefourthbird从你的帖子中学到的。我认为你必须使用
\G(?!^)
查看此与此的对比如果4位数字的断言失败,它将计算OR
|
,这是真的,因为
\G
在两个位置匹配。然后它将开始匹配。使用
\G(?!^)
将防止出现这种情况。太好了,我会记住的!谢谢你的洞察力。非常感谢你的努力!抱歉,我忘了提到这必须在.NET中工作,所以看起来\K不起作用…啊,我明白你的意思:-)我想逗号在标点符号所在的问题中的数字后面。在这种情况下,+1(并非所有引擎都支持\G和\K)您自己可能是对的。无论如何,我希望我正确地实现了这些。我是通过tw;)通过您的帖子了解到这一点的。我认为您必须使用
\G(?!^)
查看此与此的对比如果4位数字的断言失败,它将计算OR
|
,这是真的,因为
\G
在两个位置匹配。然后它将开始匹配。使用
\G(?!^)
将防止出现这种情况。太好了,我会记住的!感谢您的洞察力。非常感谢各位的努力!抱歉,我忘了提到这个必须在.NET中工作,所以看起来\K不起作用…谢谢这个,但我无法让它为我工作。为此,我无法让它为我工作,但我无法让它为我工作