[英]Limit the number of words with regular expression
您提供的正则表达式^(?:\\b\\w+\\b[\\s\\r\\n]*){1,250}$
如果没有任何特殊字符,则可以将250个单词限制为多行。
如果我需要搜索还包含特殊字符的单词数怎么办? 像这样的例子:
--> Hi! i need help with regular expression, please help me. <--
最简单的方法是对单词字符进行分组,并将这些分组限制在特定范围内(1-250):
^\W*(\w+(\W+|$)){1,250}$
我对C#不熟悉,因此我将描述正则表达式。
方法1:
您基本上是在寻找这个:
(\b[^\s]+\b){1,250}
在Java中:
\\s
是任何空格字符。
[^\\s]+
是一系列非空白字符。
\\b
是单词边界。
您可以将正则表达式转换为C#。
方法2:
将输入文本标记为空格分隔的单词。 在Java中,这是通过以下方式完成的:
String[] tokens = inputString.split("\\s+");
正则表达式为\\s+
现在,您可以计算数组的长度,并实现逻辑以拒绝超过250个字。
方法3:
定义一个模式以将空白捕获为“捕获组”。
(\s+)
现在,您可以使用while循环对模式匹配器中的匹配数进行计数。 这本质上与方法2相同,但不涉及创建令牌数组。
回答迟了一点,但是这里没有解决方案:
^([A-ZA-Z0-9] + [^ A-ZA-Z0-9] *){1,8} $
{1,8}定义您想要多少字
您可以在任何表达式上使用{a,b}
量词,如下所示:
.{1,256}
[\d\w_?]{1,567}
(0x)?[0-9A-F]{1,}
因此,就您而言,您可以使用:
^(?:\b\w+\b[_!?\s\r\n]*){1,250}$
_!?
可以是任何特殊字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.