【问题标题】:How to search and add a string before the pattern in python using regular expressions如何使用正则表达式在python中的模式之前搜索和添加字符串
【发布时间】:2018-03-29 02:42:53
【问题描述】:

我正在编写一个程序来从所有具有给定扩展名的文件中查找和替换一个字符串。
我在这里使用正则表达式进行搜索。任务是查找所有出现并修改它们。

如果我的字符串是“号码是 1234567890”
搜索替换后的结果应该是+911234567890

我想我可以在这里 re.sub() 喜欢

s = "The number is 1234567890"
re.sub(r"\d{10}",??,s)

这里的第二个参数可以给出什么我不知道数字是多少我通过在它前面加上 +91 来修改相同的匹配字符串
我可以使用 re 中的 findall 并从字符串中替换,例如

s = "The number is 1234567890 and 2345678901"
matches = re.findall(r'\d{10}',s)
for match in matches:
    s = s.replace(match,"+91"+match)

这个s之后的号码是+911234567890和+912345678901

这是唯一的方法吗??不能使用 re.sub() 吗? 如果是请帮助我。谢谢...!

【问题讨论】:

    标签: regex string python-3.x


    【解决方案1】:

    试试这个正则表达式:

    (?=\d{10})
    

    Click for Demo

    说明:

    • (?=\d{10}) - 正向前瞻以找到一个长度为零的匹配项,其后紧跟 10 位数字

    代码

    import re
    regex = r"(?=\d{10})"
    test_str = "The number is 1234567890"
    subst = "+91"
    result = re.sub(regex, subst, test_str, 0)
    if result:
        print (result)
    

    Code Output

    如果我使用 your regex,代码将如下所示:

    import re
    regex = r"(\d{10})"
    test_str = "The number is 1234567890"
    subst = "+91$1"
    result = re.sub(regex, subst, test_str, 0)
    if result:
        print (result)
    

    【讨论】:

    • 1 美元有什么作用??
    • $1 包含第 1 组的内容,在本例中为 10 位数字。
    • 你能告诉我学习积极前瞻的资源吗?
    • THIS 是一个很好的开始网站
    • 感谢您的帮助:)
    猜你喜欢
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多