我有以下正则表达式:
我有以下字符串:
注意我的捕获组以一个或多个与模式匹配的数字开头。然而,这就是我得到的结果:
为什么812的前三位数字丢失了?
REGEX = /^.+(\d+.+(?=AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY)[A-Z]{2}[, ]+\d{5}(?:-\d{4})?).+/
我有以下字符串:
str = "fdsfd 8126 E Bowen AVE Bensalem, PA 19020-1642 dfdf"
注意我的捕获组以一个或多个与模式匹配的数字开头。然而,这就是我得到的结果:
str =~ REGEX
$1
=> "6 E Bowen AVE Bensalem, PA 19020-1642"
或者
match = str.match(REGEX)
match[1]
=> "6 E Bowen AVE Bensalem, PA 19020-1642"
为什么812的前三位数字丢失了?
str = "fdsfd 2-8126 E Bowen..."
呢?请注意,你的正则表达式结尾的.+/
和./
是相同的(也和.+$/
相同)。此外,如果你的正则表达式只包含了几个州的缩写(比如说4个),那么这并不会改变问题,读者也不需要横向滚动来阅读它。 - Cary Swoveland