Regex将从10000以下的数字中删除逗号
我需要一个正则表达式来从10000以下的所有数字中去掉逗号,例如9999但10000、1000000等 这适用于9999,正确忽略10000,但会导致1000000(1000000): 不幸的是,我不能简单地排除像9999这样的4位数字后面的逗号。我尝试了另一种方法,但没有找到9999: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 有什么想法吗?
\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不起作用…谢谢这个,但我无法让它为我工作。为此,我无法让它为我工作,但我无法让它为我工作