C# 如何匹配字母和数字组合的单词,但避免只匹配数字的单词

C# 如何匹配字母和数字组合的单词,但避免只匹配数字的单词,c#,regex,C#,Regex,我需要创建一个正则表达式,它可以从一个字符串中获取邮政信箱的完整信息,我想我需要获取所有信息,直到找到一个完整的数字字符串为止(邮政信箱号码是可以的,之后,只有当一个单词是数字和字母的组合时才可以匹配,如果整个单词是由数字组成的,那么它应该停在那里,即 从以下字符串: "Po Box 321 Stn Commerce Court 123 Sample St" "PO Box 456 Stn 1st Can Place" 我需要在123号样本之前拿到所有东西,如下所示: "Po Box

我需要创建一个正则表达式,它可以从一个字符串中获取邮政信箱的完整信息,我想我需要获取所有信息,直到找到一个完整的数字字符串为止(邮政信箱号码是可以的,之后,只有当一个单词是数字和字母的组合时才可以匹配,如果整个单词是由数字组成的,那么它应该停在那里,即

从以下字符串:

"Po Box 321 Stn Commerce Court 123 Sample St"   
"PO Box 456 Stn 1st Can Place" 
我需要在123号样本之前拿到所有东西,如下所示:

"Po Box 321 Stn Commerce Court "
从以下字符串:

"Po Box 321 Stn Commerce Court 123 Sample St"   
"PO Box 456 Stn 1st Can Place" 
我需要得到所有的东西,因为在邮政信箱号码之后没有一个单词是由数字组成的

到目前为止,我实现了第一个case的工作,但是我还没有找到一个同时适用于两个字符串的表达式

我的尝试:

Regex.Match(txtString.Text, @"PO BOX [0-9]+([\s\w][^0-9]*|\s[a-zA-Z0-9]\s)", RegexOptions.IgnoreCase)

谢谢你

你可以积极地展望未来:

PO BOX [0-9]+.*(?= \d+|$)
PO BOX [0-9]+((?!\d+ ).)*
见演示

或者使用消极的前瞻:

PO BOX [0-9]+.*(?= \d+|$)
PO BOX [0-9]+((?!\d+ ).)*

演示

谢谢Kasramvd,我不知道为什么尽管我在C#中使用你的建议没有得到相同的结果,但我的代码是这样的:private void button3_Click(object sender,EventArgs e){var match=Regex.match(txtString.Text,@“PO BOX[0-9]+.*(=\d++$)”,RegexOptions.IgnoreCase);txtResult.Text=match.Success?match.Value:@“No matched”}@pcons您有任何错误吗?您的输出是什么?它适用于“邮政信箱234 Stn 1st Can Place”-它检索所有好的内容-,但是对于字符串“邮政信箱442 Stn Commerce Court 199 Bay St”它还检索所有内容,它不停在199…@pcons关于
邮箱[0-9]+((?!\d+)*
?我得到相反的结果,它只检索“邮箱442 Stn商业法院199 Bay St”,对“邮箱442 Stn商业法院199 Bay St”有效,但现在它不适用于“邮箱234 Stn First Can Place”,因为它只检索“邮政信箱234 Stn”