Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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,我正在尝试合并两个正则表达式模式,以便根据文本使用其中一个,但它不起作用: 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()
#                            ^^^^^^^^^