我需要两个正则表达式。一个会找到第二个数字块,一个会找到第三个数字块。我的数据是这样的:
8782910291827182 04 1988 081
一个代码找到04
,另一个代码找到1988
。我已经有了找到前 16 个数字和后 3 个数字的表达式,但我一直在寻找第二部分和第三部分的这两个数字。
我需要两个正则表达式。一个会找到第二个数字块,一个会找到第三个数字块。我的数据是这样的:
8782910291827182 04 1988 081
一个代码找到04
,另一个代码找到1988
。我已经有了找到前 16 个数字和后 3 个数字的表达式,但我一直在寻找第二部分和第三部分的这两个数字。
根据您的语料库,似乎应该能够依赖由制表符或其他空格分隔的四个字段的存在。拆分字段比构建和测试正则表达式要容易得多,所以我建议跳过正则表达式,除非您的示例中没有包含边缘情况。
考虑以下 Ruby 示例:
# Split the string into fields.
string = '8782910291827182 04 1988 081'
fields = string.split /\s+/
#=> ["8782910291827182", "04", "1988", "081"]
# Access members of the field array.
fields.first
#=> "8782910291827182"
fields[1]
#=> "04"
fields[2]
#=> "1988"
# Unpack array elements into variables.
field1, field2, field3, field4 = fields
p field2, field3
#=> ["04", "1988"]
正则表达式将迫使您在模式匹配上花费更多时间,尤其是当您的语料库变得越来越复杂时;字符串拆分通常更简单,并且可以让您更多地关注结果集。在大多数情况下,最终结果在功能上是相似的,因此哪一个对您更有用将取决于您真正想要做什么。有其他选择总是好的!
找到 2 个数字:
\b\d{2}\b
找到 4 个数字:
\b\d{4}\b