gpt4 book ai didi

ruby - 正则表达式 : between brackets, 以特定字符串开头但不忽略空格

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:41 25 4
gpt4 key购买 nike

我正在尝试从字符串中提取特定模式的所有唯一出现。我的字符串是
text = '我叫{{user_name}} {{user_second name}}。我是{{anything_else}}'
我想提取以“user_”开头的双括号内的文本。对于给定的字符串,我想要以下数组
["user_name", "user_second name"]
我正在尝试使用以下正则表达式来实现此目的,但如果方括号内有空格,它会以某种方式忽略它。
text.scan(/\{{(customer_\w*)\}}/).uniq.flatten 返回 ["user_name"]

非常感谢任何帮助。

最佳答案

\w*只匹配 0 个或多个字符,不匹配空格。

似乎这种情况的最佳模式是惰性点模式:

/{{(user_.*?)}}/
^^^

参见 Rubular demo和一个 online Ruby demo .

.*?这里将匹配除换行符以外的任何 0+ 个字符,尽可能少,直到第一个 }}。 .

如果用户名不能有} , 你可以使用 /{{(user_[^}]*)}}/正则表达式也是。 [^}]*取反字符类匹配除 } 以外的 0 个或多个字符字符。 .*?还有另一个区别基于解决方案:[^}]也匹配换行字符。制作 .匹配换行符,添加一个/m带有第一个正则表达式的修饰符,/{{(user_.*?)}}/m .

关于ruby - 正则表达式 : between brackets, 以特定字符串开头但不忽略空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46454875/

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