Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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,我有一个非常长的标准列表,用于通过pandas str.contains()进行正则表达式匹配,然后创建一个指示标志,如下所示: criteria_list = ['pattern1','pattern2','pattern3'] criteria_search_pattern = '|'.join(criteria_list) df_transactions['flag'] = (df_transactions['text'].str.contains(criteria_search_pa

我有一个非常长的标准列表,用于通过pandas str.contains()进行正则表达式匹配,然后创建一个指示标志,如下所示:

criteria_list = ['pattern1','pattern2','pattern3']

criteria_search_pattern = '|'.join(criteria_list)

df_transactions['flag'] = (df_transactions['text'].str.contains(criteria_search_pattern)).astype(int)
这种方法对我很有效。但是,我注意到,为了避免碰撞,我需要更严格地处理一些标准。我的问题是,是否有可能以某种方式混合部分模式和精确模式

例如:

partial pattern|(no prior characters permitted)partial pattern|partial pattern(no trailing characters permitted)|exact pattern
编辑:

以下是一些具体的例子:

963, 
E27, 
27, 
95678, 
956, 
95312

96 partial match (no extra criteria), return true 
E27 partial match (no prior characters permitted), return false 
276 partial match (no prior characters permitted), return true
95678 partial match (no trailing characters permitted), return false
6956 partial match (no trailing characters permitted), return true
95312 exact match, return true

您可以使用
partial pattern | pattern忽略前面的字符$|^ pattern忽略后面的字符|^精确模式$
<代码>^x表示字符串的开头应该是
x
,这意味着
x
应该在末尾。

这可能是可能的,大多数情况都是这样。你能提供一些你不想匹配的东西的清晰例子吗?如果你只对布尔结果感兴趣,那么你所拥有的就足够了。是的,但是要意识到,对于管道来说,顺序很重要/foo | foobar | foo\w+/g将仅与“foobarz”中的“foo”匹配。谢谢大家。我更新后提供了一些具体的例子。
“^95312$| 96 | 27 | 956”
是适用于当前编辑场景的模式。感谢您的回答。我还澄清了我的例子,以确保我准确地描述了这些行为。