Skip to main content
 首页 » 编程设计

c#之行首的正则表达式之或之句子中的最后一个数字

2024年02月20日25飞鱼

new Regex(@"^[a-zA-Z]+\b +\b[a-zA-Z]?\b +\b[a-zA-Z]+$") 

这个匹配

John Smith John B Goode

我正在尝试针对以下情况修改此正则表达式:

12359 (John B? Goode) 10249? 之前的一些文字

有时名称出现在字符串末尾的数字之后,也可能出现在末尾的最终数字之前。

我试过了

new Regex(@"^|[0-9]+([a-zA-Z]+\b +\b[a-zA-Z]?\b +\b[a-zA-Z]+) *[0-9]*?$") 

但这行不通,因为

  1. ^|[0-9]+只匹配数字而不是行首
  2. 该组始终是一个空字符串,匹配类似 sometext 12354 的内容(第一个数字不需要在行尾。

更新

这都是桥下的水,因为我在数据行的末尾发现了更多的名字,所以这行不通。

然而,我的问题的解决方案并不是将 OR 放在一个组中。

请您参考如下方法:

您需要用括号括起交替:

(^|[0-9]+) 

你的表达等同于:

new Regex(@"^|()") 

它总是匹配字符串的开头而不是其他任何内容。