regex - 正则表达式提取单词之前/之后的数字
问题描述
我有10000
描述,我想使用正则表达式来提取与短语“逮捕”相关的数字。
例如:
"police arrests 4 people"
"7 people were arrested".
数字范围从1-99
.
我尝试了以下代码:
gen arrest= regexm(description, "(^[1-9][0-9]$)[ ]*(arrests|arrested)")
我不能简单地提取数字,因为描述中还提到了与逮捕无关的数字。
解决方案
您可以使用此正则表达式:
(?:([1-9]?[0-9])[a-zA-Z ]{0,20}(?:arrests|arrested))|(?:(?:arrests|arrested)[a-zA-Z ]{0,20}([1-9]?[0-9]))
它通过交替将搜索分为 2,无论数字是在“逮捕|逮捕”之前还是之后。
它创建一个非捕获Group
,它匹配一个number
从 1-9(这是可选的)和一个从 0-9 的数字。这之后是匹配0 - 20 of any letter
和空格(其他单词),然后再匹配 'arrests OR arrested.
它然后将其与相反的情况(数字最后出现的位置)进行 OR 运算。
如果数字within 20 chars
来自“ arrests|arrested
”,这将匹配。
推荐阅读
- c++ - WriteConsoleOutputCharacter 绘制额外像素厚的空白空间
- c++ - 显式实例化无法正常工作
- go - WSDL SOAP Go 语言
- android - 100% 以外的缩放比例时,Android Studio 设计视图像素化
- listview - Xamarin Forms MVVM - 测试列表视图中空白的源数据
- regex - 正则表达式只匹配一个字符而不匹配任何其他字符
- angularjs - AngularJS $location.path 在 url 之前添加 #!/
- python - 在 Python 中迭代 CSV 文件的困难
- jdbc - “数据异常:字符串数据,右截断”插入准备好的语句
- checkbox - 颤振:复选框 onChanged