如何解决匹配模式多行 Integromat
我想将多行中的特定模式与 Integromat 中的匹配模式进行匹配。语言是 ECMAScript (JavaScript) FLAVOR。
Salutation: Mr. x Mx. Mrs.
或者它看起来像这样:
Salutation: Mr. Mx. x Mrs.
我想获取 x\s
之后的字符串,以提取 Mr.
Mx.
或 Mrs.
。
目前,我在这一点上,但只有当 x 在 Mr.
之前才匹配
Salutation:\s(x\s(.*?)[\s])
我需要如何更改它?提前致谢!
解决方法
您可以使用带有交替的捕获组来匹配 Mr. Mrs. 或 Mx 的单个出现。
\bSalutation:.*?\sx\s(M(?:rs?|x)\.)
模式匹配:
-
\bSalutation:
逐字匹配 -
.*?\sx\s
尽可能至少匹配任何字符,直到空格字符之间第一次出现 x -
(
捕获组 1(在示例中称为m[1]
)-
M(?:rs?|x)\.
匹配M
后跟 r 和可选的 s 或 x,然后是一个点
-
-
)
关闭第 1 组
const regex = /\bSalutation:.*?\sx\s(M(?:rs?|x)\.)/;
[
"Salutation: Mr. x Mx. Mrs.","Salutation: Mr. Mx. x Mrs.","Salutation: Mr. Mx. x Mr.",].forEach(s => {
const m = s.match(regex);
if (m) {
console.log(m[1]);
}
});
如果你想匹配 x 之后的所有出现,并且在 Javascript 版本中支持lookbehind:
(?<=\bSalutation:.*\sx\s.*)\bM(?:rs?|x)\.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。