Regex 组重复正则表达式?

Regex 组重复正则表达式?,regex,Regex,我想匹配以下文本: PokerStars Hand #95528134282: Tournament #2013004001, $0.10+$0.01 USD Hold'em No Limit - Level VI (100/200) - 2013/03/14 15:35:36 WET [2013/03/14 11:35:36 ET] Table '2013004001 5898' 9-max Seat #1 is the button Seat 1: Pucharrin (7250 in ch

我想匹配以下文本:

PokerStars Hand #95528134282: Tournament #2013004001, $0.10+$0.01 USD Hold'em No Limit - Level VI (100/200) - 2013/03/14 15:35:36 WET [2013/03/14 11:35:36 ET]
Table '2013004001 5898' 9-max Seat #1 is the button
Seat 1: Pucharrin (7250 in chips) 
Seat 2: pahol (24180 in chips) 
Seat 3: dno16 (2000 in chips) 
Seat 4: sogd20i07 (150 in chips) is sitting out
Seat 5: koaollie (13680 in chips) 
Seat 6: vovik770 (6307 in chips) 
Seat 7: gab341978 (6920 in chips) 
Seat 8: 19gow63 (1000 in chips) 
Seat 9: pokerplayer (9048 in chips) 
pahol: posts small blind 100
dno16: posts big blind 200
*** HOLE CARDS ***
Dealt to pokerplayer [3s 9d]
sogd20i07: folds 
koaollie: folds 
vovik770: folds 
gab341978: folds 
19gow63: raises 800 to 1000 and is all-in
pokerplayer: folds 
Pucharrin: folds 
pahol: raises 1000 to 2000
dno16: calls 1800 and is all-in
*** FLOP *** [4s 7c Ah]
*** TURN *** [4s 7c Ah] [Qs]
*** RIVER *** [4s 7c Ah Qs] [Ks]
*** SHOW DOWN ***
pahol: shows [Qc Qd] (three of a kind, Queens)
dno16: shows [6h 2h] (high card Ace)
pahol collected 2000 from side pot
19gow63: shows [Kd 2s] (a pair of Kings)
pahol collected 3000 from main pot
19gow63 re-buys and receives 1000 chips for $0.10
dno16 re-buys and receives 2000 chips for $0.20
*** SUMMARY ***
Total pot 5000 Main pot 3000. Side pot 2000. | Rake 0 
Board [4s 7c Ah Qs Ks]
Seat 1: Pucharrin (button) folded before Flop (didn't bet)
Seat 2: pahol (small blind) showed [Qc Qd] and won (5000) with three of a kind, Queens
Seat 3: dno16 (big blind) showed [6h 2h] and lost with high card Ace
Seat 4: sogd20i07 folded before Flop (didn't bet)
Seat 5: koaollie folded before Flop (didn't bet)
Seat 6: vovik770 folded before Flop (didn't bet)
Seat 7: gab341978 folded before Flop (didn't bet)
Seat 8: 19gow63 showed [Kd 2s] and lost with a pair of Kings
Seat 9: pokerplayer folded before Flop (didn't bet)
我想把以“Seat somenumber:someplayername(芯片中的somenumber)someoptionaltext”开头的行作为一个组来捕捉。 我尝试了以下正则表达式:

PokerStars.*?Level .+? \(\d+\/(\d+)\) (?:.|\s)*?((?:Seat \d+: .*? \(\d+ in chips\)(?:.|\s)*?)+)(?:.|\s)*?(.*?) collected (\d+)
但它只捕获了第一次出现的“座位1:Pucharin(7250英寸芯片)”

如何更改它以捕获该组


谢谢。

这里有一个regexp,可以捕获您需要的数据。当您指定这些元素的语法/顺序时,我可以为您修改它

(Seat\s(\d)+:\s+([\w\d\-\\\\\\\\\.]+)\s+\((\d+)\s+在\s+芯片中)(.*))

我使用了你的服务和输入来测试它,似乎工作得很好

--编辑--

除非您希望整个块从
PokerStars
开始并在最后一个
处停止)
那么也许:

if (preg_match('/((?:PokerStars.*\s*Table.*[\r\n]*)(?:Seat.*\s+)+)/i', $subject, $regs)) {
    $result = $regs[0];
} else {
    $result = "";
}

您是否尝试过
preg\u match\u all
?哪种语言?例如,JavaScript、Perl等等?您使用的是什么技术?我在这里测试正则表达式。我使用的自动热键有PCRE兼容的正则表达式。我正在使用preg\u match\u all。不能
Seat\d:\w+
满足您的需要吗?但我还想将开头的星星与“扑克明星”匹配。如果我将您的正则表达式更改为此Pokerstars(?:。\s)*?(Seat\s(\d)+:\s+([\w\d\-\u\.]+)\ s+((\d+)\s+in\s+chips)(*),则不匹配。请提供您想要实现的纯文本结果。这样我就可以尝试对regexp进行微调