我试图使用regex将字符串拆分为多个字符串。我有如下的字符串:
我期待着这样的产出:
我想要编写一个单独的表达式来拆分所有给定的场景。我试着编写以下表达式,但在某些情况下失败了
re.split(r'(?=[1-9]{1}\.[\s]?[a-zA-Z0-9\.\:\(\)\-\,\% ]+)', string)发布于 2022-01-17 12:22:21
我建议查找(?<!\d)NUM\. ( NUM后面有一个.,而没有其他前面的数字)模式中使用的每个后续数字,并只在这些位置拆分:
import re
texts = ['1. 10.25% 2. 11% 3. 9.75% 4. 4.3%',
'1.promising.2.inappropriately3.essential.4.itense.',
'1. He has not been attending 2. English classes 3. since one month4. No error',
'1. X got 15 shares2. B got 25 shares3. W got 54. shares.4. Mark got 2.5 shares']
pattern = r'(?<!\d){}\.'
for text in texts:
bps = []
prev = 0
for i in range(1,1000):
rx = re.compile(pattern.format(i))
m = rx.search(text, prev)
if m:
if prev != m.start():
bps.append(text[prev:m.start()].strip())
prev = m.start()
else:
break
if prev < len(text) - 1:
bps.append(text[prev:].strip())
print(bps) 见Python演示。
输出:
['1. 10.25%', '2. 11%', '3. 9.75%', '4. 4.3%']
['1.promising.', '2.inappropriately', '3.essential.', '4.itense.']
['1. He has not been attending', '2. English classes', '3. since one month', '4. No error']
['1. X got 15 shares', '2. B got 25 shares', '3. W got 54. shares.', '4. Mark got 2.5 shares']注意rx = re.compile(pattern.format(i))和m = rx.search(text, prev)行:模式是编译的,因为Pattern.search方法允许从指定的位置进行搜索,这是前一个匹配的起始位置。
range(1,1000)部件可以调整,1000假设文本中有多达999个项目点。
https://stackoverflow.com/questions/70740992
复制相似问题