gpt4 book ai didi

regex - 如何匹配包含子字符串的模式

转载 作者:数据小太阳 更新时间:2023-10-29 08:56:27 25 4
gpt4 key购买 nike

我有这段文字:

Testing some text {{ first_name | mask }} and another {{ city }} and again {{ state | mask_trail }}

我只想匹配包含管道 |{{}}

但是当我做类似的事情时

text.scan(/({{.*?\|+.*?}})/)

{{city}} 也匹配

最佳答案

使用可以使用这个正则表达式,

{{(?:(?!{{).)*\|(?:(?!{{).)*}}

解释:

  • {{ - 匹配文字 {{
  • (?:(?!{{).)* - 匹配除文字 {{ 之外的任何文本,也称为 Tempered Greedy Token
  • \| - 匹配管道 | 字符
  • (?:(?!{{).)* - 再次匹配除文字 {{
  • 之外的任何文本
  • }} - 匹配文字 }}

Demo 1

另外,如果有这样的嵌套模式,而你想匹配最里面的模式,你可以使用这个正则表达式,

{{(?:(?!{{|}}).)*\|(?:(?!{{|}}).)*}}

Demo 2

检查这个 Ruby 代码,

re = /{{(?:(?!{{|}}).)*\|(?:(?!{{|}}).)*}}/
str = 'Testing some text{{ {{ first_name | mask }} }} and another {{ city }} and again {{ state | mask_trail }}'

str.scan(re) do |match|
puts match.to_s
end

输出,

{{ first_name | mask }}
{{ state | mask_trail }}

Online Ruby demo

关于regex - 如何匹配包含子字符串的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54987984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com