Javascript Regex-以不同的顺序和状态从字符串中捕获属性
我正在尝试用JavaScript创建一个正则表达式,它将匹配下面的每一行,并且还将Javascript Regex-以不同的顺序和状态从字符串中捕获属性,javascript,regex,Javascript,Regex,我正在尝试用JavaScript创建一个正则表达式,它将匹配下面的每一行,并且还将image\u path、caption和alt的值分别捕获为$1、2和$3 {{} {{{} {{{} {{} {{} {{}既然您已经标记了Javascript,我假设您需要一个与JS兼容的模式。我还要假设每个文本都在一行上 快速细分 ^-从生产线开始 (?=.*\b短代码/响应映像\b)-正向前瞻,以在线路上查找“短代码/响应映像” (?=(?:.*image_path=“([^”]+)”)-正向前瞻,
image\u path
、caption
和alt
的值分别捕获为$1、2和$3
{{}
{{{}
{{{}
{{}
{{}
{{}
既然您已经标记了Javascript,我假设您需要一个与JS兼容的模式。我还要假设每个文本都在一行上
快速细分
- ^-从生产线开始
- (?=.*\b短代码/响应映像\b)-正向前瞻,以在线路上查找“短代码/响应映像”
- (?=(?:.*image_path=“([^”]+)”)-正向前瞻,在非捕获组内的行上查找image_path=,该非捕获组是可选的,并且有一个组与我们想要的组相匹配,即组$1
- 由于我们使用了Lookaheads,因此上面的操作将确保光标仍然位于行的开头,因此我们可以对“caption=”和“alt=”重复该过程
- 由于我们现在有3个连续的组按顺序排列,同时使用lookaheads来确定匹配项是否存在,而它们是可选的,因此将为任何匹配项创建组
image_path=“([^”]+)“|()”
-如果image_path=“([^”]+)”不匹配,则匹配()空组以创建空/空组项,并使用与上一示例类似的其他匹配词重复该操作
您可以选择独立于顺序。请显示您当前的尝试,以了解您的困境。谢谢。这在捕获3个组的值方面非常有效,具有不同的顺序和状态。唯一的问题是,当我使用substrustion时,始终附加完整的字符串。例如
$1-$2-
返回/image.jpg--A caption--{{{}
用于第一行。是否可以修改它以仅返回组-即/image.jpg--标题--
?嗨,AJP,很高兴听到这一点。在替换方面,如果您想清除整个字符串,只需将*$
添加到模式的末尾。由于光标仍在行的开头,这将选择所有t他在行上输入文本,并将其完全替换为您的替换。
^(?=.*\bshortcodes\/responsive-image\b)(?=(?:.*image_path="([^"]+)")?)(?=(?:.*caption="([^"]+)")?)(?=(?:.*alt="([^"]+)")?)
^(?=.*\bshortcodes\/responsive-image\b)(?=(?|.*image_path="([^"]+)"|()))(?=(?|.*caption="([^"]+)"|()))(?=(?|.*alt="([^"]+)"|()))