我正在嘗試查找與浮點或字串運算式匹配的正則運算式。
即要匹配的文本可能如下所示:
ABC 3.101
DEF 5.0
HIJ ?Error
KLM 1.0
NOP Range
我目前的版本是:
fp_word = r"(?:[- ]?\d .\d |\w \?)"
但它與?ErrororRange大小寫不匹配。
它應該匹配
3.101
5.0
?Error (including the question mark)
1.0
Range
uj5u.com熱心網友回復:
你的正則運算式是這樣的:
(?:[- ]?\d .\d |\w \?)
它不匹配非數字字串,因為您試圖匹配 1 單詞字符后跟文字,?即?字串之后。而在您的輸入中,您只有一個以開頭的值,?而另一個甚至沒有,?因此兩者都無法匹配。
如果我正確理解您的要求,您可以使用這個正則運算式:
[ ]([- ]?\d .\d |\S )
正則運算式演示
它以空格開始匹配,并匹配有符號浮點數或 1 的非空格,即\S .
uj5u.com熱心網友回復:
您可以使用
(?<= ).
請參閱此正則運算式演示。它匹配除換行符以外的任何一個或多個字符,直到第一個空格后的行尾。
如果您的正則運算式應該只匹配一個數字或一些可選地以?字符開頭的單詞,并且您想使用您的正則運算式,但只匹配您可以使用的(非)單詞邊界
(?:\b(?=\w)|\B(?=\W))(?!^)(?:[- ]?\d (?:\.\d )?|\??\w )
請參閱正則運算式演示。這里,
(?:\b(?=\w)|\B(?=\W))-型別 2 的自適應動態詞邊界(YouTube 視頻解釋):如果下一個字符是詞字符,則匹配詞邊界,否則,該位置必須是非詞邊界位置(?!^)- 不是字串位置的開始(?:[- ]?\d (?:\.\d )?|\??\w )- 任何一個[- ]?\d (?:\.\d )?- 一個可選的或-,然后是一個或多個數字,后跟一個可選的 a.和一個或多個數字序列|- 要么\??\w- 一個可選的?和一個或多個單詞字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/437267.html
