簡體   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