繁体   English   中英

用正则表达式限制单词数

[英]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.

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