簡體   English   中英

如何在此正則表達式中包含減號?

[英]How can I include a minus sign in this regex?

我正在嘗試匹配以下三行:

usemtl ftw
kd 1.2 3.2 3.1
v  -12.1892 -53.4267 -276.4055

我的正則表達式匹配前兩個:

^(\w+) ((\S+)( \S+)*) *$

我嘗試了一些變體來匹配負數,但它們只是阻止任何匹配:

^(\w+) (([\S-]+)( [\S-]+)*) *$
^(\w+) (((\S|-)+)( (\S|-)+)*) *$

我應該在這里做什么? -不是正則表達式中的特殊字符,是嗎?

-只是字符類中的一個特殊字符[...]

您的問題來自v -12.1892 -53.4267 -276.4055v-12.18...之間包含 2 個空格。 您的正則表達式只匹配一個。

試試這個正則表達式:

^(\w+)\s*((\S+)( \S+)*) *$

雖然您的正則表達式可以簡化為(雖然不確定您想要匹配和捕獲的內容):

^(\w+)(\s*\S+)*$

http://rubular.com/r/D86njdYzJF上查看

把它放在班級的第一位: [-\\S]

那么它應該工作。

v 和 -12.1892 之間有兩個空格,這似乎是您的問題。 還要使用-在字符類中,即[...]你需要用\\-轉義它

它不匹配的原因是因為您的第三行在v-12.1892之間有兩個空格。 試試這個:

^(\\w+) +(([\\S]+)( [\\S]+)*) *$ (添加的+符號允許多個空格)

這是測試它的 jsfiddle: http : //jsfiddle.net/xewys/

我能想到的與您的示例數據相匹配的最基本的正則表達式是“(\\S+\\s+)+”,但這可能不適合您 - 它似乎太通用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM