1

我的文字是:

999 blaw blaw blaw1 999 blaw blaw blaw

我想选择:

blaw blaw blaw1

现在,我可以使用:

([0-9][0-9][0-9] )(.*?)( [0-9][0-9][0-9])

但问题是我不能使用".*?"我正在使用的东西。如果我没有替换(.*?)为!([^0-90-90-9]*)1blaw1

任何建议,如果相关,我将使用 Stata。

4

2 回答 2

2

根据hwnd的评论:

clear
set more off

*----- example data -----

input str60 text
"999 blaw blaw blaw1 999 blaw blaw blaw"
end

list

*----- what you want -----

gen extract = regexs(2) if regexm(text, "(^[0-9][0-9][0-9] )(.+)( [0-9][0-9][0-9])")

list

... regexm(text, "(^[0-9]+ )(.+)( [0-9]+)")

来自help regex

正则表达式语法基于 Henry Spencer 的 NFA 算法,这与 POSIX.2 标准几乎相同。[ arguments ] 可能不包含二进制 0 (\0)。

其他参考资料有:

http://www.stata.com/support/faqs/data-management/regular-expressions/

http://www.ats.ucla.edu/stat/stata/faq/regex.htm

于 2014-09-30T01:59:19.977 回答
-2

尝试关注(?<([a-z]*[0-9]? )*) 我不熟悉Stata,但这在正则表达式的Javascript实现中工作

更新以考虑回溯。

于 2014-09-30T00:46:52.037 回答