[英]In a java regex, how can I get a character class e.g. [a-z] to match a - minus sign?
[英]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.4055
在v
和-12.18...
之間包含 2 個空格。 您的正則表達式只匹配一個。
試試這個正則表達式:
^(\w+)\s*((\S+)( \S+)*) *$
雖然您的正則表達式可以簡化為(雖然不確定您想要匹配和捕獲的內容):
^(\w+)(\s*\S+)*$
把它放在班級的第一位: [-\\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.