我想匹配使用.NET的字符串中的正數和負數(無小數或千分隔符),但我只想匹配整個單詞。 因此,如果一個字符串看起來像正則表達式僅匹配整個單詞中的數字
redeem: -1234
paid: 234432
那麼我想匹配-1234和234432
但如果文字是
LS022-1234-5678
FA123245
那麼我想沒有匹配返回。我試過
\b\-?\d+\b
但它只會在第一種情況下匹配1234,不返回「 - 」符號。
任何幫助表示讚賞。謝謝。
我想匹配使用.NET的字符串中的正數和負數(無小數或千分隔符),但我只想匹配整個單詞。 因此,如果一個字符串看起來像正則表達式僅匹配整個單詞中的數字
redeem: -1234
paid: 234432
那麼我想匹配-1234和234432
但如果文字是
LS022-1234-5678
FA123245
那麼我想沒有匹配返回。我試過
\b\-?\d+\b
但它只會在第一種情況下匹配1234,不返回「 - 」符號。
任何幫助表示讚賞。謝謝。
嗯,我敢肯定,這是遠遠不夠完善,但它是否適合你的例子:
(?<=\W)-?(?<!\w-)\d+
如果你想允許下劃線只是在號碼前,然後我會用這個修改:
(?i)(?<=[^a-z0-9])-?(?<![a-z0-9]-)\d+
讓我知道任何問題,我會盡力幫助。如果你想讓我解釋他們中的任何一個,請讓我知道。
EDIT
爲了只匹配,如果有一個空間或選項卡只是數/負符號之前(如在下面的評論說明),這可以用於:
(?<=[ \t])-?\d+
請注意,它會匹配例如在電話號碼,時間或日期值的第一個數字序列上,並且如果該數字在該行的開頭(在換行符後)則不匹配 - 確保這是你想要的:D
空間和-
之間沒有字邊界,因此您不能在那裏使用\b
。
你可以使用:根據您的要求(這是未完全指定)
(?<!\S)-?\d+\b
或
(?<![\w-])-?\d+\b
。 兩者都適用於你的例子。
你最有幫助,謝謝。這是好得多。但是,我沒有正確定義任務:只有在正號或負號前加空格或製表符(我不希望空格或製表符包含在匹配中)時才需要匹配。 – Daniel 2012-04-05 17:59:07
@Daniel - 請參閱上面編輯中的修訂 – 2012-04-09 14:03:02