【问题标题】:How to match words with combination of letters and numbers but avoid words with only numbers如何匹配字母和数字组合的单词,但避免只有数字的单词
【发布时间】:2015-08-28 15:28:03
【问题描述】:

我需要创建一个正则表达式,它可以从字符串中获取 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)

谢谢

【问题讨论】:

    标签: c# regex


    【解决方案1】:

    您可以积极向前看:

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

    查看演示https://regex101.com/r/bK7nY2/1

    或者使用负面的展望:

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

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

    【讨论】:

    • 谢谢 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 : @"不匹配"; }
    • @pcons 你有什么错误吗?你的输出是什么?
    • 它适用于“PO Box 234 Stn 1st Can Place” - 它检索所有好的东西 - 但是对于字符串“Po Box 442 Stn Commerce Court 199 Bay St”,它也检索所有内容,它不会停在 199...
    • @pcons PO BOX [0-9]+((?!\d+).)* 怎么样?
    • 我得到相反的结果,它只适用于“Po Box 442 Stn Commerce Court 199 Bay St”,仅检索“Po Box 442 Stn Commerce Court 199 Bay St”,但现在它不适用于“PO Box 234 Stn 1st Can Place”,因为它只检索“PO Box 234 Stn”
    猜你喜欢
    • 2017-10-09
    • 2017-10-09
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    相关资源
    最近更新 更多