簡體   English   中英

正則表達式匹配字符串但不匹配子字符串

[英]regex to match string but not substring

我有這個正則表達式/\\$([^:\\n]+)/和以下字符串

  1. gid$gid::
  2. $gid::
  3. ::$gid
  4. bar$:$gid:f$oo

當前在每個字符串上獨立運行正則表達式,我得到這些匹配

  1. gid
  2. gid
  3. gid
  4. [ gid , oo ]

我需要更改正則表達式,以便 1 號中沒有匹配項,而 4 號中只有一個匹配項 - 中間的$gid 換句話說,它只匹配以$開頭的字符串,這些字符串在字符串的開頭緊跟在冒號之后

先感謝您!

您可能會發現其他示例進一步限制了您的需要,但這似乎與您描述的一樣:

(^|:)(\$[^:\n]+)

在這里工作https://regex101.com/r/HGtNw1/1

我最終使用了 (php)

preg_match_all('/(^|:)\$(\w+)/m', $subject, $matches);

m選項和隱含的g選項(由_all中的_all提供)是獲得我需要的答案的關鍵。

https://www.phpliveregex.com/p/v35

暫無
暫無

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

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