我在這裏看到一個SO問題,它使用Java Matcher
和Pattern
試圖突出顯示文本,類似於Regex101突出顯示的內容。他的規範是在JTextArea中突出顯示任何沒有使用文字字符'#'的字符串。我要建議創建自己的Matcher
然後OP刪除他的問題:(正則表達式來抓取「WORD」,除了「#」之後
這是背景,現在這裏是我的問題。我如何使用正則表達式來抓住文字字符串,除非它是(但不相鄰必要)中的線的特定的字符串/字符?
實施例,如果我想選擇從以下
測試儀字符串「測試器」,#tester
測試儀測試#測試儀
測試儀
我希望我的正則表達式將選擇
測試儀,#tester
測試儀#測試儀
測試儀
但不是最後的「測試者」。
使用Regex101,我得到的距離最近的是/(?=tester)(?<!#)tester/g
,但是由於我無法做到「動態」,因此選擇了最後一個「測試」字符串。 (非零)長度回顧,據我所知。
編輯:
我的問題是不特定於Java,否則我會放置在Java標籤。除非Regex101錯誤,我不能使用Limiting Repetition,因爲「Lookbehinds需要爲零寬度,因此量詞不被允許」。
我在Java中測試WiktorStribiżew正則表達式,它工作正常。看到它是一個評論,而不是一個答案,我所能做的就是+1它,Java字符串是(?<!#.{0,1000})\\btester\\b
。我測試了它對以下Java字符串tester, #tester\ntest tester # test testern\tester
側面的問題,沒有完全定義的方式來處理跨所有語言的正則表達式?或者是Regex101只是一個糟糕的測試工具(我正在使用它們的默認PHP引擎)?
我會考慮在未來使用RegexStorm或RegexHero。
https://regex101.com/r/aT3qN3/6 – Shafizadeh
那麼它必須是隻有一個字符,這是該字符串唯一。 –
爲什麼你不能簡單地測試你想要的角色? /(?= tester)#?/ g –