簡體   English   中英

Java正則表達式匹配組為空,即使它匹配

[英]Java regex match group empty even though it matches

假設我得到了這一行:

|125148 Schalter f GLE GÜ 90/80Z nei PL 80 16AJ

並希望匹配以下兩個部分:

  • 125148
  • 沙爾特f GLEGÜ90 / 80Z nei PL 80

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM