-1

我需要两个正则表达式。一个会找到第二个数字块,一个会找到第三个数字块。我的数据是这样的:

8782910291827182    04  1988    081

一个代码找到04,另一个代码找到1988。我已经有了找到前 16 个数字和后 3 个数字的表达式,但我一直在寻找第二部分和第三部分的这两个数字。

4

2 回答 2

1

改为使用字段拆分

根据您的语料库,似乎应该能够依赖由制表符或其他空格分隔的四个字段的存在。拆分字段比构建和测试正则表达式要容易得多,所以我建议跳过正则表达式,除非您的示例中没有包含边缘情况。

考虑以下 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"]

正则表达式将迫使您在模式匹配上花费更多时间,尤其是当您的语料库变得越来越复杂时;字符串拆分通常更简单,并且可以让您更多地关注结果集。在大多数情况下,最终结果在功能上是相似的,因此哪一个对您更有用将取决于您真正想要做什么。有其他选择总是好的!

于 2013-09-04T05:19:37.963 回答
0

找到 2 个数字:

\b\d{2}\b

找到 4 个数字:

\b\d{4}\b
于 2013-09-04T04:56:55.730 回答