如何将单词与字母和数字组合进行匹配,但避免使用仅包含数字的单词

时间:2015-08-28 15:28:03

标签: c# regex

我需要创建一个RegEx,它可以从字符串中获取PO BOX完整信息,我想我需要得到,然后其他所有内容到找到一整串数字的位置(po box编号)没问题,之后,只有当一个单词是数字和字母的组合才可以匹配时,如果整个单词是由数字组成的话那么它应该就此停止,即

来自以下字符串:

"Po Box 321 Stn Commerce Court 123 Sample St"   

我需要在 123 Sample St 之前获取所有内容,如下所示:

"Po Box 321 Stn Commerce Court "

来自以下字符串:

"PO Box 456 Stn 1st Can Place" 

我需要获取所有内容,因为在邮政信箱号码

之后,没有任何单词仅由数字组成

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

我的尝试:

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

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用积极的展望:

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

请参阅演示https://regex101.com/r/bK7nY2/1

或使用负面展望:

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

演示https://regex101.com/r/bK7nY2/3