[英]Java regex issue (negative lookahead & lookbehind)
我需要你們的幫助,伙計們。 這是一個棘手的 java 正則表達式問題。 幾個小時以來一直在尋找解決方案。:. 這里是:
在下面的文字中,我想匹配“船”字......
我有一條船要賣。 它帶有額外的船用螺旋槳,但沒有船用拖車(船很大,所以您可能也需要船用螺旋槳拖車)。 我曾經有很多船,但我對船的熱情隨着時間的推移而消退。 我不認為人們會對一堆船感興趣,但這是我的最后一艘,所以 Yeéé::)
我在正則表達式 101 ( https://regex101.com/r/o6S4SP/22 ) 中得到了這個示例設置,但它不能正常工作:-(
PS:我使用 Regex101 作為示例,但 Java 的正則表達式語法不支持“(SKIP)(FAIL)”。
希望任何人都可以提供幫助:-)
您可以在 Java 中使用以下正則表達式,該正則表達式具有受限寬度的后向模式(支持限制量詞):
(?<!\bfor\sa\s(?:bunch\sof\s){0,1})(?:\bbunch\s+of\s+)?\bboats?\b(?:\s+propellers?)?+(?!\s+trailers?\b)
在 Java 中,
s = s.replaceAll("(?<!\\bfor\\sa\\s(?:bunch\\sof\\s){0,1})(?:\\bbunch\\s+of\\s+)?\\bboats?\\b(?:\\s+propellers?)?+(?!\\s+trailers?\\b)", "<b>$0</b>");
正則表達式詳細信息
(?<?\bfor\sa\s(:,bunch\sof\s){0,1})
- 如果在當前位置的左側緊鄰有
\bfor\sa\s
- for
, 空格, a
, 空格bunch
(?:bunch\sof\s){0,1}
- 0 或 1 次出現(即可選出現) bundle , whitespace, of
, whitespace(?:\bbunch\s+of\s+)?
- 可選出現bunch
,1+ 個空格, of
,1+ 個空格\bboats?\b
- 一個完整的單詞boat
或boats
(?:\s+propellers?)?+
- 可選出現 1+ 個空格,后跟propeller
或propellers
。 注意: ?+
所有格量詞是這里的關鍵,以使下一個前瞻僅在此組模式之后執行。(??\s+trailers?\b)
- 如果緊鄰當前位置的右側有 1+ 個空格,然后是一個或多個trailer
trailers
作為一個完整的單詞,則匹配失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.