提取以数字开头和结尾的子字符串
Extracting a substring that starts and ends with a digit
我想通过正则表达式提取第一个以数字开头并以数字结尾的子字符串。
- BLAH 1174 (RE:q) --> 应该提取 1174
- BLAH 1194 (RE:g)5454 --> 应该提取 1194
- TITI 1026 (RE: w) 54454 --> 应该提取 1026
- TOTO 2009-21 --> 应该提取 2009-21
- TOTO2009-21 --> 应该提取 2009-21
- TUTU 2008-15 2013-12 --> 应该提取 2008-15
我可以匹配数字([0-9]+),但无论如何都找不到来处理完整的请求。
在此先感谢您的帮助
我们要找一个数字/\d/
,然后找尽可能多的字符/.*/
,然后在最后再找一个数字/\d/
。
将这些组合在一起,您的正则表达式:/\d.*\d/
。
如果您只想匹配满足此条件的单词,请使用:\d\w*\d
。这
\w*
只匹配两个数字之间的单词字符。
如果您也想要非单词字符,请使用 /\d\S*\d/
,这将为您提供任何以数字开头和结尾的非 space 字符串。
您可以使用基于捕获组的正则表达式。
^\D*(\d\S*\d)
或
在 C# 中。
@"(?m)(?<=^\D*)\d\S*\d"
然后从组索引 1 中获取您想要的字符串。
或
只需禁用全局修饰符g
。这样它就不会在同一行中找到另一个匹配项。
\d\S*\d
我想通过正则表达式提取第一个以数字开头并以数字结尾的子字符串。
- BLAH 1174 (RE:q) --> 应该提取 1174
- BLAH 1194 (RE:g)5454 --> 应该提取 1194
- TITI 1026 (RE: w) 54454 --> 应该提取 1026
- TOTO 2009-21 --> 应该提取 2009-21
- TOTO2009-21 --> 应该提取 2009-21
- TUTU 2008-15 2013-12 --> 应该提取 2008-15
我可以匹配数字([0-9]+),但无论如何都找不到来处理完整的请求。
在此先感谢您的帮助
我们要找一个数字/\d/
,然后找尽可能多的字符/.*/
,然后在最后再找一个数字/\d/
。
将这些组合在一起,您的正则表达式:/\d.*\d/
。
如果您只想匹配满足此条件的单词,请使用:\d\w*\d
。这
\w*
只匹配两个数字之间的单词字符。
如果您也想要非单词字符,请使用 /\d\S*\d/
,这将为您提供任何以数字开头和结尾的非 space 字符串。
您可以使用基于捕获组的正则表达式。
^\D*(\d\S*\d)
或
在 C# 中。
@"(?m)(?<=^\D*)\d\S*\d"
然后从组索引 1 中获取您想要的字符串。
或
只需禁用全局修饰符g
。这样它就不会在同一行中找到另一个匹配项。
\d\S*\d