Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于替换所有下划线的正则表达式,除非它们是标签的一部分_Python_Regex - Fatal编程技术网

Python 用于替换所有下划线的正则表达式,除非它们是标签的一部分

Python 用于替换所有下划线的正则表达式,除非它们是标签的一部分,python,regex,Python,Regex,我不知道如何编写正则表达式语句来将所有下划线替换为',除非下划线是hashtag语句的一部分。 例如,如果我们有一个文本,我们希望替换除“请帮助”等情况之外的所有下划线 最简单的方法可能是将所有连续单词与下划线进行匹配,然后传递函数/lambda以旧式方式删除下划线,前提是第一个字符不是。: 这里涉及的正则表达式非常简单: 作为匹配组(()) 零个或一个符号(?) 后跟((?:)+)的不匹配组,至少重复一次 后跟下划线(\w*.)的任意数量的类字字符 看起来您希望我们为您编写一些代码。虽然许多

我不知道如何编写正则表达式语句来将所有下划线替换为
'
,除非下划线是hashtag语句的一部分。
例如,如果我们有一个文本,我们希望替换除“请帮助”等情况之外的所有下划线

最简单的方法可能是将所有连续单词与下划线进行匹配,然后传递函数/lambda以旧式方式删除下划线,前提是第一个字符不是

这里涉及的正则表达式非常简单:

  • 作为匹配组(
    ()
  • 零个或一个符号(
  • 后跟(
    (?:)+
    )的不匹配组,至少重复一次
  • 后跟下划线(
    \w*.
    )的任意数量的类字字符

看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、回溯等)。你提供的细节越多,你可能得到的答案就越多。检查and。你是对的,但老实说,我连一部分都写不出来。@GhazalehKharadpoor:那么也许你可以尝试一下,而不使用正则表达式?@Simon'monica'Shine我可以,但我对正则表达式的格式很好奇:)
sample = 'Here is_a_sample string #with_a_hashtag'
rstr = r'(#?(?:\w*_)+)'
# in this case, this matches like so:
#    'is_a_'
#    '#with_a_'
new_sample = re.sub(rstr, 
    lambda s: s.group(0) if s.group(0).startswith('#') else s.group(0).replace('_', ' '), 
    sample)
print(new_sample)
# 'Here is a sample string #with_a_hashtag'