[英]Regex match group not working even if .find() and matches() were already called
[英]Java regex match group empty even though it matches
假設我得到了這一行:
|125148 Schalter f GLE GÜ 90/80Z nei PL 80 16AJ
並希望匹配以下兩個部分:
16AJ可以用作“斷點”,因此從數字后的第一個字母到“斷點”的所有內容都應在組中進行匹配。
我以某種方式使用此正則表達式^\\|([0-9])+(.)+(?=\\s+16AJ)
但是我的第一組包含8個字符,而第二組^\\|([0-9])+(.)+(?=\\s+16AJ)
包含任何字符。
看這個演示
我在這里錯過了什么? 為什么第二組為空?
^\|([0-9])+(.+)(?=\s+16AJ)
^^
您需要將量詞帶入捕獲組。
您可以使用此正則表達式:
^\|([0-9]+)\s+(.+?16AJ)
在Java中:
^\\|([0-9]+)\s+(.+?16AJ)
第一組為125148
,第二組為Schalter f GLE GÜ 90/80Z nei PL 80 16AJ
。
第二組不為空。 您在第一個組中捕獲了8
,在第二個組中捕獲了0
個,這正是我對正則表達式的期望。 您需要將量詞放在捕獲組中。 這樣,您一次捕獲一個字符,每次都覆蓋先前捕獲的字符。
我認為這是您想要的:
^\|([0-9]+)\s+(.+?)\s+16AJ
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.