Regex 正则表达式匹配第n次出现并返回字符串的后续部分
我正在使用Zapier提取模式,我需要使用Regex从以下数据中为Zap的每个步骤返回不同的名称: '与示例名称A()的对话 “来自示例名称A的消息” 与示例名称B()的对话 “来自示例名称B的消息” 与示例名C()的对话 “来自示例名称C的消息” 与示例名称D()的对话 “来自样本名称D的消息” 例如,对于第三个Zap,我想返回第三个实例“Conversation with”和“(.”之间的内容,在本例中是Regex 正则表达式匹配第n次出现并返回字符串的后续部分,regex,Regex,我正在使用Zapier提取模式,我需要使用Regex从以下数据中为Zap的每个步骤返回不同的名称: '与示例名称A()的对话 “来自示例名称A的消息” 与示例名称B()的对话 “来自示例名称B的消息” 与示例名C()的对话 “来自示例名称C的消息” 与示例名称D()的对话 “来自样本名称D的消息” 例如,对于第三个Zap,我想返回第三个实例“Conversation with”和“(.”之间的内容,在本例中是示例名C 每次运行正则表达式时,名称都会不同 到目前为止,我已经与(\S[^(]*)(?
示例名C
每次运行正则表达式时,名称都会不同
到目前为止,我已经与(\S[^(]*)(?:|\z)进行了^.*对话,它返回示例名称A
如何调整代码以返回列表中的第二个、第三个或第四个名称
谢谢!如果我理解正确,我们只希望提取样本名称,我们可以从右边界为(
)的表达式开始尝试,左边界已在原始表达式中定义:
(?:Conversation with )(.+?)(?:\s+\(.+)
你会这样做的。
要得到第n个,只需将其放入下面的{nth}
量词中。
在这种情况下,我们得到第三个
(?mis)\A(?:*?^与[]+){3}(.*)(?=[]*\(https://)的对话[]+
解释
(?mis) # Modifiers: multi-line, case-insensitive, dot-all
\A # Beginning of string
(?: # Cluster group
.*? # minimal, optional any characters
^ # BOL
Conversation [ ]+
with [ ]+
){3} # End cluster, do 3 times
( .*? ) # (1), 3rd Name to capture
(?= [ ]* \(https:// ) # Assert, https ahead of here
然后你需要使用上一部分:谢谢@bobblebubble,那么整个东西看起来怎么样?你在最后一条评论中点击了(模式上的)了吗?它显示了整个东西。只需替换{2}
之前有任意数量的行。感谢这在Regex 101中工作,但在Zapier提取模式函数中返回一个错误-知道为什么吗?不知道,因为我不知道您的工具的Regex风格。也许这一点不太准确:(?:Conv.*\n+{2}与(\S[^(]*)对话\b
谢谢你的回复Katie。这会返回所有的名字,但我只想在每段代码中返回一个名字。因此,例如,我只想返回示例名C。抱歉,我会尽量更清楚!我可以为每个Zap输入不同的正则表达式,所以在第一个Zap中,我想返回第一个“对话”实例之间的任何内容然后我需要一个不同的正则表达式来返回第二个实例“与对话”和“(”我可以用同样的方式返回“来自示例名称C的消息”吗?我正在寻找倒逗号“text”实例之间的文本…(?)mis)\a:(?)(?^\“+){3}(.*)(=\”)@Alan-你的意思是类似于(?mis)\a(?:.*?^\“来自[]+){3}(.*?(=\”)的消息[]+”
?