Python 使用|选项的正则表达式模式
我正在尝试合并两个正则表达式模式,以便根据文本使用其中一个,但它不起作用:Python 使用|选项的正则表达式模式,python,regex,Python,Regex,我正在尝试合并两个正则表达式模式,以便根据文本使用其中一个,但它不起作用: test1 = re.sub(r'(Total_pass[^a-zA-Z]*).*', r'\1', test, flags=re.S).rstrip() 该公司为/nTotal_pass 31---4星服务有限公司工作。然后 为/东泰路通3-1----4*Mount服务有限公司工作 所需输出:/n总通过3 1----4 合并两个代码: test3 = re.sub(r'(Total_pass([^a-zA-Z]|[^
test1 = re.sub(r'(Total_pass[^a-zA-Z]*).*', r'\1', test, flags=re.S).rstrip()
该公司为/nTotal_pass 31---4星服务有限公司工作。然后
为/东泰路通3-1----4*Mount服务有限公司工作
所需输出:/n总通过3 1----4
合并两个代码:
test3 = re.sub(r'(Total_pass([^a-zA-Z]|[^\\*])*).*', r'\1', test, flags=re.S).rstrip()
或
我做错了什么
第一个代码在遇到**符号时停止工作,而第二个代码用于**您可以将两个否定字符类合并为一个:
test3 = re.sub(r'(Total_pass[^*a-zA-Z]*).*', r'\1', test, flags=re.S).rstrip()
# ^^^^^^^^^
见
细节
总通过次数[^*a-zA-Z]*-捕获组1:
总通过次数-文字文本
[^*a-zA-Z]*-0个或更多字符,星号和ASCII字母除外
.*-字符串末尾的任意0个或更多字符。
您可以将两个否定字符类合并为一个:
test3 = re.sub(r'(Total_pass[^*a-zA-Z]*).*', r'\1', test, flags=re.S).rstrip()
# ^^^^^^^^^
见
细节
总通过次数[^*a-zA-Z]*-捕获组1:
总通过次数-文字文本
[^*a-zA-Z]*-0个或更多字符,星号和ASCII字母除外
.*-字符串末尾的任意0个或更多字符。
尝试test1=re.subr'Total_pass[^*a-zA-Z]*.*,r'\1',test,flags=re.S.rstrip。但是你知道[^[\*]匹配任何字符,但[和*?这是打字错误吗?你是说[^*],以匹配任何字符,但*?显示使用re.subs的代码,并提供一个具有预期输出1的示例字符串-我有一整套文本,在单词Total_pass之后的第一个单词出现时,我需要丢弃这些文本。问题是有时在新单词出现之前,它以*开头,就像一个免责声明。这就是我为什么要尝试的原因ng使用这两种方法。例如:此代码-test1=re.subr'Total_pass[^a-zA-Z]*.*,r'\1',test,flags=re.S.rstrip在文本:*免责声明…即,当单词以*符号开头时test2=re.subr'Total_pass[^[*]*',r'\1',test,flags=re.S.rstrip在本例中适用*。我正在尝试将它们合并,以便在两种情况下都适用:当单词以*开头时,以及当它只是一个普通单词时。不,[^a-Za-z]*匹配*,它不能在*之前停止。请使用更多详细信息更新问题。尝试test1=re.subr'Total_pass[^*a-Za-z]*.*',r'\1',test,flags=re.S.rstrip。但是你知道[^[\*]匹配任何字符,但是[and*]吗?这是打字错误吗?你的意思是[^*],以匹配任何字符,但*?显示使用re.subs的代码,并提供一个具有预期输出1的示例字符串-我有一整套文本,在单词Total_pass之后的第一个单词出现时,我需要丢弃这些文本。问题是有时在新单词出现之前,它以*开头,就像一个免责声明。这就是我为什么要尝试的原因ng使用这两种方法。例如:此代码-test1=re.subr'Total_pass[^a-zA-Z]*.*,r'\1',test,flags=re.S.rstrip在文本:*免责声明…即,当单词以*符号开头时test2=re.subr'Total_pass[^[*]*',r'\1',test,flags=re.S.rstrip在本例中适用*。我正在尝试将它们合并,以便在两种情况下都适用:当单词以*开头时,以及当它只是一个普通单词时。不,[^a-Za-z]*匹配*,它不能在*之前停止。请更新问题的详细信息。
test3 = re.sub(r'(Total_pass[^*a-zA-Z]*).*', r'\1', test, flags=re.S).rstrip()
# ^^^^^^^^^