python - 在没有正则表达式的可能分隔符列表之后删除所有内容

标签 python regex

我有一个可能的分隔符列表。我正在处理几千个字符串,需要在找到其中一个分隔符后去除所有内容。注意:永远不会出现字符串中超过 1 个分隔符的情况。

例子:

patterns = ['abc', 'def']
example_string = 'hello world abc 123'

如果 example_string 是这种情况下的输入,则输出应该是 hello world abc

我目前正在使用正则表达式作为解决方案,这是有效的,但我想使用一种不使用正则表达式的方法。这是我当前的实现:

 regex = r'(.*)(' + '|'.join(patterns) + r')(.*)'
 example_string= re.sub(regex, r'\1\2', example_string).lstrip()

我正在考虑搜索以查看模式中的分隔符之一是否在字符串中,然后从分隔符长度的位置到字符串末尾索引字符串。

不确定这是否是实现它的好方法,或者是否可行。

最佳答案

您可以使用 find功能。这里检查每个模式,如果找到,则在模式的开始位置(或通过添加模式的长度来结束模式的位置,如示例中)对字符串进行切片:

    patterns = ['abc', 'def']
    example_string = 'hello world abc 123'
    for pattern in patterns:
        location = example_string.find(pattern)
        if location >= 0:
            example_string = example_string[:location + len(pattern)]
            print example_string
            break

关于python - 在没有正则表达式的可能分隔符列表之后删除所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38699114/

相关文章:

python - 哪个python模块用于读取Windows中的CPU温度和处理器风扇速度?

javascript - 使用 JavaScript 正则表达式风格,如何仅在另一个特定标签内匹配特定标签?

正则表达式以匹配 Powershell 中的 URL

c# - 使用正则表达式 C# 替换 Unicode(泰米尔语)字符串

使用正则表达式替换重复的字符组

python - Pandas 数据框分组求和

python - 在 Popen 中避免 shell=True

python - 如何编辑交叉表的输出以显示精确到小数点后第二位的百分比?

SGE 集群上的 Java 最大堆大小

Java - 模式匹配