簡體   English   中英

如何在要刪除的句子末尾刪除帶有 # 或 $ 的單詞(正則表達式)

[英]How to remove words with # or $ at the end of a sentence to be removed (Regex)

我有以下內容:

The moment #BTC, we have all $BTC been waiting for:We are happy to announce NIX Platform is rebranding to.. $NBT > $VOICE $NIX > $MUTE $ETH $BTC #BTC

我只想刪除帶有 # 或 $ 的單詞要從末尾刪除,而不是從中間刪除,所以上面的字符串看起來像這樣

The moment #BTC, we have all $BTC been waiting for:We are happy to announce NIX Platform is rebranding to..  >  > 

目前我有#(??(:?hashtag)\b)[\w-]+(?=(::\s+#[\w-]+)*\s*$)作為正則表達式,它使用 # 刪除單詞從頭開始,但不是 $,不確定我還需要包含哪些內容

具有單詞邊界和負前瞻的替代正則表達式,以禁止空格后面的任何單詞字符:

[#$@]\w+\b(?!\W*\s\w)

正則表達式演示

正則表達式解釋:

  • [#$@] : 匹配#$@
  • \w+b :匹配 1+ 個單詞字符,后跟單詞邊界
  • (?!\W*\s\w) :否定前瞻斷言我們在當前 position 前面的空格后沒有單詞字符

或者,您也可以使用 *atomic group` 來禁止回溯:

[#$@](?>\w+)(?!\W*\s\w)

您可以使用積極的前瞻並斷言直到字符串結尾所有單詞都以非單詞字符開頭。

[#$][^\s$#]+(?=(?:\s+[^\w\s]\S*)*\s*$)
  • [#$][^\s$#]+匹配#$和 1+ 次出現的任何字符,除了#$
  • (?=正向前瞻,在右邊斷言
    • (?:\s+[^\w\s]\S*)*可選重復 1 個或多個空白字符,后跟除 whitspace 或 char 字符外的任何字符
    • \s*匹配可選的尾隨空白字符
    • $字符串結尾
  • )關閉前瞻

正則表達式演示


如果以$#開頭可以包含另一個,另一種選擇可能是使用帶有捕獲組和反向引用\1的緩和貪婪令牌方法。

為了防止部分匹配,您可以在左側添加斷言空白邊界。

(?<!\S)([#$])(?:(?!\1)\S)*(?=(?:\s+[^\w\s]\S*)*\s*$)

正則表達式演示

暫無
暫無

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

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