Sata中的字符型函数与正则表达式
查找并提取查找结果
gen age_low = real(ustrregexs(0)) if ustrregexm(年龄,".*(?=-)")
- 其中,年龄为字符型变量,包含了类似于“18-25岁“这样的字符。
ustrregexm命令可以进行正则匹配,当符合匹配时返回1,否则为0,因此该命令不能范围查找结果,需要结合ustrregexs(0)命令使用。ustrregexs(0)意为返回上一个ustrregexm命令中匹配到的第一个结果。real()为将字符型转为数值型的命令。- 当处理中文字符时,必须使用
ustrregexm,而不是regexm。
前向与后向查找
-
(?=pattern)正向肯定预查(look ahead positive assert),
在任何匹配pattern的字符串开始处匹配查找字符串。
例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows” -
(?<=pattern)反向(look behind)肯定预查
例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”
特殊字符处理
charlist varname可以返回某个变量中的所有字符(数字、标点符号、特殊字符和英文字母);随后return list可以返回这些字符对应的ASCII编码。
该命令可以快速检索字符型变量中的特殊字符。
正则表达式版本
Regular expression syntax is based on Henry Spencer’s NFA algorithm, and this is nearly identical to the POSIX.2 standard.(来自于stata17的string function的说明文档)


浙公网安备 33010602011771号