我有字符串,可以有不同数量的“组”。我需要把它们分开,但我很难做到。组总是以[A-Z]{2-5}
开头,后面是一个:
和一个字符串,或者是可变的长度和空格。它将永远有一个空间在前面的小组。
示例字符串:
"YellowSky AA:Hello AB:1234 AC:1F 322 AD:hj21jkhjk23"
"Billy Bob Thorton AA:213231 AB:aaaa AC:ddddd 322 AD:hj2ffs dsfdsfd1jkhjk23"
到目前为止,我的代码:
import re
D = "Test1 AA:Hello AB:1234 AC:1F 322 AD:hj21jkhjk23"
g = re.compile("(?<!^)\s+(?=[A-Z])(?!.\s)").split(D)
如你所见..。这适用于一个单词开始字符串,但不是多个单词。
但这会使/w空间失败:
发布于 2021-06-07 22:20:12
您可以使用
re.split(r'(?!^)\s+(?=[A-Z]+:)', text)
详细信息
(?!^)
-一种负前瞻,与字符串开头的位置不匹配(等于(?<!^)
,但比字符串短一个字符)\s+
-一个或多个空白空间(?=[A-Z]+:)
-一个积极的前瞻性,需要一个或多个大写的ASCII字母与一个:
字符紧跟在当前位置的右侧。发布于 2021-06-07 22:32:31
([A-Z]{2,5}:\w+(?: +\w+)*)(?=(?: +[A-Z]+:|$))
您也可以直接使用re.findall
。
见演示。
https://regex101.com/r/6jf8EM/1
这样你就不需要过滤不想要的组了,later.You得到了你需要的东西。
https://stackoverflow.com/questions/67879236
复制相似问题