RegExp:缺少最后一个符号

RegExp:缺少最后一个符号,regex,street-address,Regex,Street Address,我写了一个正则表达式: ^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|кв-л)\s(.+)[^\)]$ 它将字符串分为街道类型和街道名称。有些街道有街道位置描述,我不想选择 这是: 它可以工作,但街道名称中的每一个符号都丢失了。我想知道为什么会发生这种情况以及如何修复它?您的[^)]正好匹配一个非)的字符。。。。那是你丢失的街道名称中的字母 你可以用这个: ^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|

我写了一个正则表达式:

^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|кв-л)\s(.+)[^\)]$
它将字符串分为街道类型和街道名称。有些街道有街道位置描述,我不想选择

这是:

它可以工作,但街道名称中的每一个符号都丢失了。我想知道为什么会发生这种情况以及如何修复它?

您的
[^)]
正好匹配一个非
)的字符。
。。。那是你丢失的街道名称中的字母

你可以用这个:

^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|кв-л)\s([^\)]+?)$
您的
[^)]
正好匹配一个非
。。。那是你丢失的街道名称中的字母

你可以用这个:

^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|кв-л)\s([^\)]+?)$
原因是被求反的字符类仍然使用匹配的子字符串。在断言字符串/行的结尾后使用负lookback(零宽度断言,非消耗性构造):

^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|кв-л)\s(.+)$(?<!\))
                                                         ^^^^^^^
请参见

原因是被求反的字符类仍然使用匹配的子字符串。在断言字符串/行的结尾后使用负lookback(零宽度断言,非消耗性构造):

^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|кв-л)\s(.+)$(?<!\))
                                                         ^^^^^^^

请参见将其放入捕获组(并最终排除换行符):

如果您只想放弃位置描述并保留其余部分:

^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|кв-л)\s([^(\s]*(?:\h+[^(\s]+)*)

将其放入捕获组(并最终排除换行符):

如果您只想放弃位置描述并保留其余部分:

^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|кв-л)\s([^(\s]*(?:\h+[^(\s]+)*)

那么,我怎么能漏掉带括号的行而不丢失最后一个符号呢,我怎样才能漏掉带括号的行,而不丢失最后一个符号?请澄清:您不想要有位置描述的街道,或者您不想要位置描述本身?请澄清:您不想要有位置描述的街道,或者您不想要位置描述本身?看起来引擎不支持此功能,但是谢谢你什么意思?您使用的是哪个引擎?看起来引擎不支持此功能,但谢谢您这是什么意思?你用的是哪种发动机?