为什么捕获组的数量不同?

时间:2017-07-14 11:19:03

标签: ruby regex capture-group

我有这个小正则表达式,让我们称之为正则表达式

(?:\.$|\:$|\: ([^\:]*?)$|\. (#{Rx_abbr_lit}(?:, #{Rx_abbr_lit})?)\.?$|$)

我在一个更大的复合正则表达式中使用该正则表达式,我将其称为Regex-BIGRegex-BIG找到两个捕获组没有问题,然后尝试匹配Regex-smallRegex-small应该匹配字符串的结尾。如果它在冒号后面有任何内容,或者包含1或2个缩写(Rx_abbr_lit只是一个很长的替代而没有捕获组),它会捕获它。因此,Regex-BIG应该有3个捕获组,最后一个返回字符串或nil。

然而,当我尝试向Regex-small添加另一个条件时,它最终捕获了我想要的内容,但是作为捕获组4,而不是3(3总是为空):

(?:\.$|\:$|((?:#{Rx_abbr_combo_All})\: [^\:]*?)$|\: ([^\:]*?)$|\. (#{Rx_abbr_lit}(?:, #{Rx_abbr_lit})?)\.?$|$)

Rx_abbr_combo_All只是缩写的另一种选择,并成功捕获了类似的内容:

  

abbr。:这里有一些文字。

为什么我的Regex-BIG添加了一个替代更改行为?每个替代方案中捕获组的数量始终为0或1。

这些是我一直在努力的例子:

  • formaż。 od Facet; dziewczyna lekka:对ci,panie,szyk F.! GOM。 Co到za F.? RZ。 od Fakcyjny; działaniewinteresie fakcji:Bałś。,żebygonieposądzonooF. F. Tarn。
  • przym。 odFałda; gieol。:Góry,dolinyfałdowe=powstałewskutekkurczeniaś。 skorupy ziemskiej。
  • przym。 od Fankiel; apt。:Ulepek F.(syrupus foeniculi)= ulepek zkopruwłoskiego。
  • przym。 od Fartuszek; przen。 kobiecy,babski:Fartuszkowązyskawszyprotekcję,pobralibuławy,kluczeipieczęcie。 Kaczk。 Fartuszkowe fawory。 Kaczk。
  • przym。 od Feler; mającyfelery; wybrakowany,wysortowany:Towar F.(= brak)。
  • przym。 od Fernambuk; bot:Drzewo fernambukowe p。 Fernambuk
  • przym。 od Fetyszyzm; Fetyszerskibałwochwalczy。
  • przym。 od Fijolet; Fjoletowyfijołkowy:Kwarc F. = ametyst。 KolorF.Pomalowaćnafijoletowo(= na kolor F。)。
  • przym。 od Fracht; ×Fraktowy,×Frochtowy transportowy,przewozowy,ładowny,ciężki:F.wóza。 buda frachtowa。 Wagon,statek。 F. Poczta frachtowa。列表F. p。 Fracht。 Makler P.(=dostarczającyfurmanomiszypromładunkuzapewnym wynagrodzeniem)。
  • przym。 od Fryjer; †Fryjownyrozwiązły,lubieżny,wszeteczny,rozpustny。
  • przym。 od Futro; podbity futrem:KołnierzF。Rękawicefutrzane。

0 个答案:

没有答案