首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有不同模式的拆分多个字符串的正则表达式

具有不同模式的拆分多个字符串的正则表达式
EN

Stack Overflow用户
提问于 2022-01-17 11:59:40
回答 1查看 65关注 0票数 0

我试图使用regex将字符串拆分为多个字符串。我有如下的字符串:

  • ‘1.10.25%2.11%3.9.75%4.4.3%’
  • '1.promising.2.inappropriately3.essential.4.intense.‘
  • '1.他从一次month4开始就没有上过2节英语课。没有错误。
  • '1. x得到15 shares2,B得到25 shares3,W得到54. shares.4,Mark得到2.5股。‘

我期待着这样的产出:

  • ‘X获得15股’2.B获得25股‘,’3.W获得54股‘,'4.马克获得2.5股’
  • “1.10.25%”
  • “2.11%”
  • “3.9.75%”
  • “4.4.3%”

我想要编写一个单独的表达式来拆分所有给定的场景。我试着编写以下表达式,但在某些情况下失败了

代码语言:javascript
复制
re.split(r'(?=[1-9]{1}\.[\s]?[a-zA-Z0-9\.\:\(\)\-\,\% ]+)', string)
EN

回答 1

Stack Overflow用户

发布于 2022-01-17 12:22:21

我建议查找(?<!\d)NUM\. ( NUM后面有一个.,而没有其他前面的数字)模式中使用的每个后续数字,并只在这些位置拆分:

代码语言:javascript
复制
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演示

输出:

代码语言:javascript
复制
['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个项目点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70740992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档