繁体   English   中英

正则表达式-如何匹配整个字符串并仅捕获一定长度的子组

[英]Regex - How to match an entire string and capture only a subgroup if it it is certain length

我想在Java中使用此正则表达式提供一些帮助,我正在其中用户在聊天中输入票证号码。

我正在使用以下可能性和正则表达式TTN-\\d{1,4}?([0-9]{1,9})

位数可以为10,但有时用户不会包括前导零,因此我需要确保将字符串与最多10位数字匹配。 但是,我遇到的问题是,如果位数大于10,它仍然会捕获。

我想与以下内容相匹配,并捕获“ TTN-”后的数字

random word TTN-484424 random word -我会捕获4844254。效果很好。

TTN-0000846110我会捕获0000846110。效果很好。

hey look at TTN-0000844555 blah blah -我会捕获0000844555的。效果很好。

random word TTN-00099999990980 random word -我不想匹配此字符串,因为数字位数大于10; 因此,用户错误地输入了票证编号。

我一直在阅读正则表达式教程,并尝试使用“ $”来表示字符串的结尾,但这不起作用,因为它的长度仍在继续。

如何表示正则表达式仅在字符串的数字小于等于10时才开始匹配?

谢谢!

使用单词边界。

TTN-(\d{1,10})\b

\\d{1,10}匹配1到10位数字的字符。 \\b单词字符和非单词字符之间匹配的单词边界。

最多不能超过10个数字。

TTN-(\\d{1,10})(?!\\d)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM