我知道这并不完美,但我正在寻找一个正则表达式来猜测文件中的某一行是否是街道地址(不带城市州邮政编码)。
例如:
北主街 112 号
3525 韦伯斯特
1 石大道
莫里森 34 号
因此,我尝试的方法是:至少有一个数字、至少一个大写字母、至少两个小写字母,以及字符串中间的某个位置至少有一个空格。到目前为止,我还没有成功:
/[1-9][A-Z]{1}[a-z]{2}\s/
我知道这并不完美,但我正在寻找一个正则表达式来猜测文件中的某一行是否是街道地址(不带城市州邮政编码)。
例如:
北主街 112 号
3525 韦伯斯特
1 石大道
莫里森 34 号
因此,我尝试的方法是:至少有一个数字、至少一个大写字母、至少两个小写字母,以及字符串中间的某个位置至少有一个空格。到目前为止,我还没有成功:
/[1-9][A-Z]{1}[a-z]{2}\s/
您尝试的模式必须按照指定的顺序匹配,并且不处理以任何顺序出现的强制字符。
你可能会使用:
模式匹配:
^
字符串开头(?=[^\n\d]*\d)
使用否定字符类断言数字(\n
没有不跨换行符)(?=\h*\S+\h+\S)
断言两个非空白字符之间存在一个水平空白字符(?=[^A-Z\n]*[A-Z])
断言大写字符 AZ(?:[^a-z\n]*[a-z]){2}
匹配 2 个小写字符 az.*
匹配行的其余部分查看正则表达式演示
请注意,在正则表达式中,您不必使用
{1}
,因为这是默认设置,如果您想匹配数字 1-9 而不是 0-9,那么您可以更改\d
为[1-9]
使用
\s
也可以匹配换行符,我已经用它\h
来匹配水平空格字符,但你当然可以改变它。