我想使用.NET匹配字符串中的正数和负数(没有小数或千位分隔符),但我想只匹配整个单词。 所以如果字符串看起来像
redeem: -1234
paid: 234432
然后我想匹配-1234和234432
但如果文字是
LS022-1234-5678
FA123245
然后我想要没有回复的比赛。我试过了
\b\-?\d+\b
但它只会在第一个场景中匹配1234,而不会返回“ - ”符号。
感谢任何帮助。谢谢。
答案 0 :(得分:1)
空格与-
之间没有字边界,因此您无法使用\b
。
您可以使用:
(?<!\S)-?\d+\b
或
(?<![\w-])-?\d+\b
取决于您的要求(未完全指定)。 两者都适用于你的例子。
答案 1 :(得分:0)
嗯,我确信这远非完美,但它适用于您的示例:
(?<=\W)-?(?<!\w-)\d+
如果你想在数字之前允许下划线,那么我将使用这个修改:
(?i)(?<=[^a-z0-9])-?(?<![a-z0-9]-)\d+
让我知道任何问题,我会尽力帮助。如果您希望我解释其中任何一个,请告诉我。
修改强> 的
要仅匹配数字/负号前面的空格或制表符(如下面的评论中所述),则可以使用此选项:
(?<=[ \t])-?\d+
请注意,它会匹配,例如在电话号码,时间或日期值的第一个数字系列上,如果数字位于行的开头(换行后),则不匹配 - 确保这是您的意图:D