【问题标题】:Regex to detect string including special characters正则表达式检测包含特殊字符的字符串
【发布时间】:2022-03-03 15:47:25
【问题描述】:

我有这些输入:

s1 = 'I am using c++ programming'. 

s2 = = 'I am usingc++ programming'. 

我想检查 s1 或 s2 是否包含确切的单词 c++。

在 s1 和 s2 上运行这个正则表达式,它没有给出任何输出:

x=s1 #x=s2

if re.search(r'\bc\+\+\b', x):
    print(x)

预期结果:在 s1 中检测到 c++

【问题讨论】:

标签: python regex string


【解决方案1】:

您可以使用这个正则表达式,使用不同风格的单词边界:

\bc\+\+\B

RegEx Demo

正则表达式详细信息:

  • \b: 非单词字符和单词字符之间的单词边界
  • c\+\+:匹配c++
  • \B: 逆词边界匹配 \b 不匹配的地方

Python 代码:

>>> import re
>>> s1 = 'I am using c++ programming'
>>> s2 = 'I am usingc++ programming'
>>> rx = re.compile(r'\bc\+\+\B')
>>> print (rx.findall(s1))
['c++']
>>> print (rx.findall(s2))
[]
>>>

【讨论】:

    【解决方案2】:

    您可以执行以下操作

    import re
    x = 'I am using c++ programming'
    
    pattern = re.compile(" c\+\+ ")
    results = re.findall(pattern, x)
    
    if results:
        print(x)
    

    如果c++ 不在字符串中,results 将为空。

    【讨论】:

    • 请仔细阅读问题。我们只需要检测确切的 c++ 是否存在。如果您在 s2 上运行示例,它将打印 s2,这就是我添加 \b 的原因
    • 道歉,现已更新。
    • 至少对于您在问题中提到的情况。如果您还想省略说I am using-c++ programming,那显然不会成立。
    猜你喜欢
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2022-12-28
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    相关资源
    最近更新 更多