簡體   English   中英

正則表達式以匹配字符串中的模式

[英]regular expression to match pattern in string

以下是在文件導入時將使用的示例單詞

  • 東切斯特頓(劍橋)
  • 紐約(美國)
  • 孩子(父母)

因此,這是業務規則:

  1. 第一個字至少應為3個字符(孩子)
  2. 留出空間 ,但如果只有空間,那是無效的(le East Chesterton)
  3. 這個詞的另一部分在( someword )
  4. ( someword )是可選的
  5. 如果( someword )存在,則其最小長度為3,並且還允許使用空格。

我使用以下表達式在某種程度上實現了這一點:

^[a-zA-Z ]{1,}\([a-zA-Z ]{1,}\)$
  1. 現在我要確保這是正確的表達。 有什么方法可以自動檢查多個組合以驗證我的表情?

  2. 我如何實現可選部分(第4點),它是否可以通過(somedata)檢查第一部分的最小值。

還要提取“()”中的數據

\((.*?)\)

我想你快到了。 我試了 這符合您的所有要求嗎?

^[a-zA-Z\s]{3,}(\([a-zA-Z\s]{3,}\))?$

https://regex101.com/r/yE9lB0/2

我通過將第二部分放在括號之間並在末尾添加問號來使其成為可選部分: (myoptionalexpression)?

我已經看過這里發布的答案。

 ^[a-zA-Z\s]{3,}(\([a-zA-Z\s]{3,}\))?$

這會與

  • 允許空間,但如果只有空間則無效(li East Chesterton)

只有空白空間已經匹配。

除此之外,“字符”的描述可能有點含糊。 因此,我假設單詞\\w是您的意思。 (在C語言中, \\w應包含ü等unicode字符。以Münster (Germany)為例。

新的正則表達式如下所示:

^\s*(?:\w{3,}\s*)+(?:\(\s*(?:\w{3,}\s*)+\))?\s*$

此處的示例: https//regex101.com/r/gS7kG8/3

請注意,regex101頁面可與php,python和js regex一起使用,在C#的情況下,它不會給出確切的結果(例如,PHP中的\\w顯然與unicode不匹配)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM