您提供的正则表达式:^(?:\b\w+\b[\s\r\n]*){1,250}$
如果它没有任何特殊字符,则限制多行250个单词。
如果我需要搜索包含特殊字符的单词数,我该怎么办?像这样的例子:
--> Hi! i need help with regular expression, please help me. <--
答案 0 :(得分:3)
最简单的方法是对单词字符进行分组,并将这些组限制在特定范围内(1-250):
^\W*(\w+(\W+|$)){1,250}$
答案 1 :(得分:3)
我不熟悉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基本相同,但不涉及创建标记数组。
答案 2 :(得分:1)
回答有点迟,但这里没有一个解决方案有效:
^([A-ZA-Z0-9] + [^ A-ZA-Z0-9] *){1,8} $
其中{1,8}定义了你想要的字数
答案 3 :(得分:0)
您可以在任何表达式上使用{a,b}
量词,如下所示:
.{1,256}
[\d\w_?]{1,567}
(0x)?[0-9A-F]{1,}
因此,在您的情况下,您可以使用:
^(?:\b\w+\b[_!?\s\r\n]*){1,250}$
_!?
可以是任何特殊字符。