Python 有可能把起始正则表达式锚定在正则表达式的中间吗?
我有一些句子需要转换成正则表达式代码。这些句子基本上是搜索规则,告诉我们要搜索什么 句子示例-Python 有可能把起始正则表达式锚定在正则表达式的中间吗?,python,regex,search,Python,Regex,Search,我有一些句子需要转换成正则表达式代码。这些句子基本上是搜索规则,告诉我们要搜索什么 句子示例- 行\u包含这是一个短语 -这是一个示例搜索规则,告诉您正在搜索的行应该有短语这是一个短语 LINE\u STARTSWITH while we-这是一个示例搜索规则,告诉您正在搜索的行应以短语while we开头 这些规则也可以组合在一起,比如-LINE_在{phrase2和phrase3}之前包含短语1,LINE_开始使用,但是我们 现在,我试图解析这些句子,然后将它们转换为正则表达式代码。所有行都
行\u包含这是一个短语
-这是一个示例搜索规则,告诉您正在搜索的行应该有短语这是一个短语
LINE\u STARTSWITH while we
-这是一个示例搜索规则,告诉您正在搜索的行应以短语while we
开头LINE_在{phrase2和phrase3}之前包含短语1,LINE_开始使用,但是我们
LINE_STARTSWITH while we
显然会变成(^while we)
因此,LINE_的正则表达式包含{phrase2和phrase3}之前的短语1,而LINE_开始使用while we
将是re.search(^while we(?=phrase one.*(phrase2 | phrase3))
我的问题是,除了正则表达式的开头,是否可以在正则表达式的其他地方使用这个start锚元素。例如(某物)(^start元素)(其他某物)
,但我想这是不允许的。如果这是不允许的,那为什么呢
我需要这个,因为在解析时,并不总是能够将这个start元素放在开头。因此,我分别解析不同的元素,并计划在最终的正则表达式中将它们作为单独的单元放在一起。另外,我描述了整个项目,以避免出现错误。您可以在模式中的某个地方使用
^
,如果您匹配行的开头,这将是有意义的。如果在图案中使用^
而不使用多行修改器,则匹配将始终失败。您可以对必须放入1个正则表达式中的条件进行排序,首先处理那些有行开始的条件,然后处理其他条件(所有行结束的条件将分别是最后一组条件)。您的意思是^(?=.*包含这个东西)(?=从这个东西开始)
?@WiktorStribiżew也将(abc)(xyz)(pqrs)
被(xyz)(^abc)(pqrs)
?@user1993:正如我所写的,^
在这种模式下永远不会失败,因为它需要字符串位置的开始。@Ryan,所以我猜你对正则表达式的所有其余部分都使用了lookahead(排序和运算符)?所以,即使它很长很复杂,也可以这样做,对吗?