作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
可以制作 conjunction ,以便字符串匹配 2 个或更多 regex
模式。
> "banana" ~~ m:g/ . a && b . /
(「ba」)
> "camelia" ~~ m:g/ <.alpha> && <-[aeiou]> /
(「c」 「m」 「l」)
regex
呢?任何长度?像这样的东西:
> "banana" ~~ m:g/ . **3 && NOT ban / # doesn't work
(「ana」)
最佳答案
TL;博士 莫里茨的回答涵盖了一些重要问题。这个答案侧重于根据 Eugene 的评论匹配子字符串(“我想找到匹配正则表达式 R
的子字符串,但不匹配正则表达式 A
。”)。
写一个断言,说你没有坐在你不想匹配的正则表达式之前,然后用你想要匹配的正则表达式跟随它:
say "banana" ~~ m:g/ <!before ban> . ** 3 / # (「ana」)
before
断言称为“零宽度”断言。这意味着如果它成功(在这种情况下意味着它不“匹配”,因为我们已经写了
!before
而不仅仅是
before
),匹配的位置不会移动。
say "banana" ~~ m:g/ . ** 3 <!after ban> / # (「ana」)
say "banana" ~~ m:g/ . ** 3 && <!before ban> .*? / # (「ana」)
&&
regex conjunction operator假设 LHS 模式成功,在重置匹配位置后也尝试 RHS(这就是为什么 RHS 现在以
<!before ban>
而不是
<!after ban>
开头)并要求 RHS 匹配相同长度的输入(这是为什么
<!before ban>
后面跟着
.*?
“填充”)。
关于raku - 如何在 Perl 6 中否定/减去正则表达式(不仅是字符类)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47396166/
我是一名优秀的程序员,十分优秀!