簡體   English   中英

沒有包含Groovy正則表達式匹配

[英]Groovy regex match without inclusion

我需要從下面的字符串中獲取每個塊Foo。 我為此使用正則表達式。 代碼如下。 但由於正則表達式的部分($|( ..F)) ,我只得到Foo[1]Foo[3] 如何使用正則表達式獲取每個Foo塊?

import java.util.regex.Matcher

String test = '''  ..Foo[1]dsfsdf
  ...........sfsdfdsfsdfsdf
  ..............sdfffffffffsd
  ..................sdffffffffffffffff
  ..Foo[2]dsfsdf
  ...........sfsdfdsfsdfsdf
  ..............sdfffffffffsd
  ..................sdffffffffffffffff
  ..Foo[3]dsfsdf
  ...........sfsdfdsfsdfsdf
  ..............sdfffffffffsd
  ..................sdffffffffffffffff
  ..Foo[4]dsfsdf
  ...........sfsdfdsfsdfsdf
  ..............sdfffffffffsd
  ..................sdffffffffffffffff'''

Matcher m = test =~ /(Foo\[[0-9]{1,6}\][\s\S]*?)($|(  ..F))/
m.find();
//after this m.count equals 2 and contains only Foo[1] and Foo[3], but I need 4 with all Foo's

你只需要通過在開頭之后添加?=將它變成正向前瞻 ( (並且轉移點以使它們可以匹配文字點),使($|( ..F))非消耗性:

(Foo\[[0-9]{1,6}\][\s\S]*?)(?=$|  \.\.F)
                           ^^^^^^^^^^^^^

請參閱正則表達式演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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