[英]Regular expression to parse multiple words
我有“ Team ScoreA-ScoreB(##%)”形式的字符串
我正在寻找一种正则表达式或字符串解析方法,该方法可以解析以下所有内容:
基本上:{单词/单词/单词缩写} {空格} {数字} {连字符} {数字} {空间} {(} {数字} {%} {)}
我有: /([AZ])\\w+\\s\\d+-\\d+\\s\\(\\d+%\\)/g
到目前为止,它只能抓住一个只有字符的单词团队。
这是用于爱好表解析器的。 我还考虑过尝试将字符串(但是空格意味着多次拆分和连接)分成三部分并进行串联,但这似乎效率很低。
要将这些行解析为单独的字符串,可以使用
^(.*?)\s*(\d+-\d+)\s*\((\d+%)\)$
说明:
^
-字符串的开头 (.*?)
-组1匹配零个或多个字符(除了换行符),尽可能少地匹配 \\s*
-零个或多个空格 (\\d+-\\d+)
-第2组一位或多位数字,连字符,一位或多位数字 \\s*
-同上。 \\(
-文字开头(
(\\d+%)
-组3匹配1个或多个数字+ %
符号 \\)
-文字结尾)
$
-字符串结尾 这是一个演示代码 :
import re
p = re.compile(r'^(.*?)\s*(\d+-\d+)\s*\((\d+%)\)$')
s = "TeamA 15-10 (30%)\nTeam A 15-10 (45%)\nTe-am A 30-15 (6%)\nTeam A's 10-30 (14%)\nTeam A. 15-20 (12%)"
lines = s.split("\n")
for x in lines:
m = p.search(x)
if m:
print("%s, %s, %s"%(m.group(1),m.group(2),m.group(3)))
re.findall
将返回元组列表。 如果有多行字符串输入,则在编译模式时使用re.MULTILINE
标志。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.