我有10000描述,我想使用正则表达式来提取与短语“逮捕”相关的数字。
例如:
"police arrests 4 people"
"7 people were arrested".
Run Code Online (Sandbox Code Playgroud)
数字范围从1-99.
我尝试过以下代码:
gen arrest= regexm(description, "(^[1-9][0-9]$)[ ]*(arrests|arrested)")
Run Code Online (Sandbox Code Playgroud)
我不能简单地提取数字,因为描述中还提到了与逮捕无关的数字。
您可以使用这个正则表达式:
(?:([1-9]?[0-9])[a-zA-Z ]{0,20}(?:arrests|arrested))|(?:(?:arrests|arrested)[a-zA-Z ]{0,20}([1-9]?[0-9]))
Run Code Online (Sandbox Code Playgroud)
它将搜索分为 2 部分,交替进行,无论数字是在“逮捕|逮捕”之前还是之后。
它创建一个非捕获Group,匹配number1-9 (可选)和 0-9 之间的数字。接下来是匹配0 - 20 of any letter和空格(其他单词),然后再匹配'arrests OR arrested.然后将其与相反的情况(数字排在最后)进行或运算。
如果数字within 20 chars来自“ arrests|arrested”,则这将匹配。