我想知道正则表达式匹配单词,使单词具有最大长度。 例如,如果一个单词的长度最多为10个字符,我希望正则表达式匹配,但是如果长度超过10,那么正则表达式不应匹配。正则表达式来匹配一定长度的单词
我试图
^(\w{10})$
但带给我只有这个词的最小长度为10个字符相匹配。如果单词超过10个字符,它仍然匹配,但只匹配前10个字符。
我想知道正则表达式匹配单词,使单词具有最大长度。 例如,如果一个单词的长度最多为10个字符,我希望正则表达式匹配,但是如果长度超过10,那么正则表达式不应匹配。正则表达式来匹配一定长度的单词
我试图
^(\w{10})$
但带给我只有这个词的最小长度为10个字符相匹配。如果单词超过10个字符,它仍然匹配,但只匹配前10个字符。
我想你想\w{1,10}\b
。 \b
匹配单词边界。
当然,你也可以替换\b
并做^\w{1,10}$
。只要它是字符串的唯一内容,就会匹配至多10个字符的单词。我认为这是你之前做的事情。
因为它是Java,所以实际上你必须避开反斜杠:"\\w{1,10}\\b"
。你可能已经知道这一点,但它之前已经得到了我。
谢谢。我确定越狱已经得到了我以前..以及0。如果单词大于10,你提供的表达式匹配10个字符。如果单词超过10个字符,我不希望它匹配。 \ w {10,}的相反排序,你可以说...! – 2012-01-28 08:15:25
@AnandHemmige:哪个表情?如果单词中有10个以上的字符,那么带'\ b'的字符不应该匹配任何内容。以'$'结尾的情况也是如此。如果字符串只是一个单词,你应该试试后者。 – 2012-01-28 08:58:58
在我的VI版本(gvim for Windows)中,我需要一个反斜杠(\\)在'{'之前工作。 – 2015-12-07 09:00:00
^\w{0,10}$ # allows words of up to 10 characters.
^\w{5,}$ # allows words of more than 4 characters.
^\w{5,10}$ # allows words of between 5 and 10 characters.
我希望其中的第一个可以作为\ w {10,}的反面,但它不适用。 – 2012-01-28 08:29:06
'^'和'$'将正则表达式锚定到字符串的开头和结尾。如果你想提取子匹配(特定长度的单词),那么你需要在它们的位置使用'\ b'单词边界锚:'\ b \ w {1,10} \ b'将会找到长度为1到10. – 2012-01-28 08:32:25
字符长度进行匹配。
默认情况下,引擎很贪婪以匹配此模式。例如,如果输入为123456789,\ d {2,5}将匹配长度为5的12345.
如果您希望引擎在匹配长度为2时返回,请使用\ d {2,5}?
这对我来说很有用,因为我一直在寻找正则表达式来发现比x更大的单词。 – Zenil 2013-08-08 04:56:23
是否有一个原因,你不想简单地迭代单词并使用'String.length()'? – MAK 2012-01-28 08:02:52
是的。这个字符串是一个更大的字符串的一部分,该字符串包含多种格式的文字 - 日期,电子邮件,网址等全部以制表符分隔的格式。我正在考虑写一个复合正则表达式来匹配整行。 – 2012-01-28 08:09:42
我明白了。由于单词是由制表符分隔的,是不是可以将它们分开(使用'String.split()'或'StringTokenizer'),然后查看每个单词的长度? – MAK 2012-01-28 08:12:26