我在尋找一些字的邊界,以便涵蓋三種情況:正則表達式:字的邊界,但對於空白,行或行結束的開始只有
- 開始串串 的
- 結束
- 白色空間
是否有這樣的事情,因爲\ b覆蓋也, - /等?
想通過一些上述替換\ b在這個模式:
(\b\d*\sx\s|\b\d*x|\b)
我在尋找一些字的邊界,以便涵蓋三種情況:正則表達式:字的邊界,但對於空白,行或行結束的開始只有
是否有這樣的事情,因爲\ b覆蓋也, - /等?
想通過一些上述替換\ b在這個模式:
(\b\d*\sx\s|\b\d*x|\b)
好了,你的真正的問題是:
如何匹配單元,任選地由數量之前,但只有在比賽之前沒有任何東西或空間的情況下才可以。
使用
(?<!\S)\b(?:\d+\s*x\s*)?\d+(?:\.\d+)?\s*ml\b
說明
(?<!\S)
:斷言,它是不可能在比賽前,以匹配非空格字符。
\b
:匹配一個字邊界
(?:\d+\s*x\s*)?
:任選地匹配量詞(僅整數)
\d+(?:\.\d+)?
:匹配的數(小數點後可選)
\s*ml\b
:匹配ml
,任選由空格之前。
你用\b
獲得的邊界是而不是對空白敏感。它們是與\w\W
或\W\w
之間的轉換有關的複雜條件斷言。請參閱this answer以瞭解如何更精確地編寫錨點,以便您可以按照自己想要的方式處理空白。
嘗試用(?:^|\s|$)
更換\b
這意味着在Python和JavaScript
( ?: don't consider this group a match ^ match beginning of line | or \s match whitespace | or $ match end of line )
爲我工作。
在Javascript中,外部組包括所有內容,包括非捕獲組。使用exec()我可以得到第二組,排除非捕獲組,但我怎麼能在Javascript中的replace()中使用它? – 2013-03-15 13:35:16
在.net中完美運行 - 謝謝!這正是我一直在尋找的。 (我試圖匹配空白/開始/行結束的正則表達式是不同的,但「匹配空白或開始或行結束」行爲正是我正在尋找。) – neminem 2013-10-24 14:55:55
@FernandoCamargo我想圖在javascript中使用replace()的同樣的東西 – Kdawgwilk 2015-05-27 19:25:17
''[\ s^$]'做你需要的嗎?此外,它可能有助於告訴你正在使用哪種正則表達式引擎。 – LarsH 2010-10-26 17:17:36
@LarsH:所示方括號中的插入符和美元是簡單字符,而不是元字符。 – 2010-10-26 17:30:13
其實我相信在方括號裏,^只是一個不同的元字符。它取消了一個值,所以[^ f]將匹配任何東西除了「f」 – gnomed 2010-10-26 17:34:09