python - 使用 python 正则表达式删除除组合为字符串的数字之外的所有数字

标签 python regex string text text-files

尝试使用正则表达式函数删除单词、空格、特殊字符和数字,但不删除与单词/字符串组合的字符。例如

ORIGIN
    1 malwmrllp1 lallalwgpd paaafvnghl cgshlvealy lvcgergffy tpktrreaed
    61 lqvgqvelgg gpgagslqpl alegslqkrg iveqcctsic slyqlenycn

//

\W+ 删除 malwmrll1 中包括 1 在内的所有数字

import re

text_file = open('mytext.txt').read()
new_txt = re.sub('[\\b\\d+\\b\s*$+\sORIGIN$\W+]', '', text_file)

print(new_txt, len(new_txt))

我的输出是:

malwmrllplallalwgpdpaaafvnghlcgshlvealylvcgergffytpktrreaedlqvgqvelgggpgagslqplalegslqkrgiveqcctsicslyqlenycn 109

所需的输出应为:malwmrll1plallalwgpdpaaafvnghlcgshlvealylvcgergffytpktrreaedlqvgqvelgggpgagslqplalegslqkrgiveqcctsicslyqlenycn 110

最佳答案

正确,根据您想要的结果是否显示下划线,尝试使用 re.findall 和原始字符串表示法。您当前使用的字符类没有意义:


\b(?!(?:ORIGIN|[_\d]+)\b)\w+

在线查看demo


  • \b - 字边界;
  • (?!(?:ORIGIN|[_\d]+)\b) - 带有嵌套非捕获组的负向前瞻,以匹配 ORIGIN 或 1 + 尾随字边界之前的下划线/数字组合;
  • \w+ - 1 个以上单词字符。

import re
  
text_file = """ORIGIN
    1 malwmrllp1 lallalwgpd paaafvnghl cgshlvealy lvcgergffy tpktrreaed
    61 lqvgqvelgg gpgagslqpl alegslqkrg iveqcctsic slyqlenycn

//"""

new_txt=''.join(re.findall(r'\b(?!(?:ORIGIN|[_\d]+)\b)\w+', text_file))    
print(new_txt, len(new_txt))

打印:

malwmrllp1lallalwgpdpaaafvnghlcgshlvealylvcgergffytpktrreaedlqvgqvelgggpgagslqplalegslqkrgiveqcctsicslyqlenycn 110

关于python - 使用 python 正则表达式删除除组合为字符串的数字之外的所有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72471884/

相关文章:

python - 在Python中模拟SHL和SHR ASM指令

python - 使用正则表达式对对象组配置进行分组

c++ - 逐个字母地存储一个字符串并打印它

android - 在 strings.xml 中使用 Unicode 字符

python - Python 中的返回值

python - 使用 virtualenvwrapper 重命名环境

Python 模块 Mahotas 阈值问题

regex - 从 bash 中的字符串中删除所有特殊字符和大小写

javascript - 在 Javascript 中使用正则表达式替换字符串的一部分

ruby-on-rails - 我正在尝试解析一些表格,它们有一些奇怪的类似字母表的非 ascii 字符