簡體   English   中英

使用 RegEx 僅獲取字符串中的第一次首次出現(如果存在)

[英]Get only first first occurence (if exists) in string with RegEx

我在使用 RegEx 時遇到了一些問題,它沒有達到我的預期。 有人可以告訴我哪里錯了嗎?

目標:獲取以“'s”結尾的第一個單詞(如果存在)(末尾有一個空格)

正則表達式:

".*'s "

測試字符串和預期結果:

Amarok's Golovin's Road => Amarok's 
Arkouna Dream's Elowin Engel's => Arkouna Dream's 
Arkouna Dream's Elowin Engel's => Arkouna Dream's  (in this case, I added a space after Engel's)
Liubov's Niagara => Liubov's 
Urane Of Watson Lake => nothing

問題:當我出現 2 次“'s”時,它會返回錯誤的結果。

您可以使用

^[A-Z][a-zA-Z]*(?:\s+[a-zA-Z]+)*'s(?!\S)
^\p{Lu}\p{L}*(?:\s+\p{L}+)*'s(?!\S)

請參閱正則表達式演示 詳情

  • ^ - 字符串的開始
  • \p{Lu} - 大寫字母
  • \p{L}* - 零個或多個字母
  • (?:\s+\p{L}+)* - 一個或多個空白字符后跟一個或多個字母的零次或多次重復
  • 's -安's substring
  • (?!\S) - 右側空白邊界。

暫無
暫無

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

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