【发布时间】:2020-04-15 00:43:33
【问题描述】:
我不是很喜欢正则表达式,但这次我不能避免它们。
我要匹配下面文本的每一行,这样每一行都是一个匹配
????️Winners in this draw????️
????John VN:Odd5=9.9 Pair3=6
????iiiddd:Odd1=1.98
????aaaxxx:Dragon10=21 Odd20=39.6
????GeralynAguilar:Big4=7.92
----------
每一行都有一个玩家。
每个玩家都有他的名字:all_the_bets_he_placed 以空格分隔。
对于每个赌注都有 bet_name=amount_he_won
我需要上面提到的所有字段,并且已经编写了可能很难看的正则表达式
Regex r = new Regex(@"^????(?<player>(?<name>[^:]+):(?<allbets>(?<onebet>(?<betname>[^=\s]*)=(?<value>\d+\.?\d*)\s?))+)$", RegexOptions.ExplicitCapture| RegexOptions.Multiline);
正则表达式只匹配一个匹配项,但如果我在每一行的末尾添加一个空格,一切都会正常工作。我不明白为什么。
感谢您的帮助。
【问题讨论】:
-
如果您可以与代码中指定的所有字符串共享minimal reproducible example,那就太棒了。
-
您能否包含使用正则表达式的代码,因为我看到它捕获了所有内容,即使每行末尾没有空格。
-
Raw,表示多行:
????(.+?):(\w*)=([\d.]+)(?=\s*(\w*)=*([\d.]+)|$)(只是写在这里,没有命名组,根本没有测试)。