gpt4 book ai didi

regex - 使用正则表达式进行非贪婪(懒惰)匹配?

转载 作者:行者123 更新时间:2023-12-04 02:06:32 28 4
gpt4 key购买 nike

你如何使用正则表达式在 Stata 中实现非贪婪匹配?或者Stata甚至有这种能力?

我想提取出现在主题标签“#”和句点“.”之间的所有文本。

示例代码:

clear
set obs 3
generate var1="anything#aaabbbccc.dddeee.fff" in 1
replace var1="anything#aaabbbccc.dddeee" in 2
replace var1="anything#aaabbbccc." in 3
generate var2=regexs(1) if regexm(var1,"#(.*)\.")
list

但是在 Stata (v.13.1) 中,我似乎无法使用非贪婪字符 #(.*?)\. .因此,上面的代码给出了这个:
+--------------------------------------------------+
| var1 var2 |
|--------------------------------------------------|
| anything#aaabbbccc.dddeee.fff aaabbbccc.dddeee |
| anything#aaabbbccc.dddeee aaabbbccc |
| anything#aaabbbccc. aaabbbccc |
+--------------------------------------------------+

但我想要的是这个:
+--------------------------------------------------+
| var1 var2 |
|--------------------------------------------------|
| anything#aaabbbccc.dddeee.fff aaabbbccc |
| anything#aaabbbccc.dddeee aaabbbccc |
| anything#aaabbbccc. aaabbbccc |
+--------------------------------------------------+

最佳答案

玩一玩#(.*?)\.将只匹配哈希符号后出现的任何非点字符,即这种模式:

#([^.]*)

试试这个代码:
clear
set obs 3
generate var1="anything#aaabbbccc.dddeee.fff" in 1
replace var1="anything#aaabbbccc.dddeee" in 2
replace var1="anything#aaabbbccc." in 3
generate var2=regexs(1) if regexm(var1,"#([^.]*)")
list

Demo

关于regex - 使用正则表达式进行非贪婪(懒惰)匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42965782/

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