[英]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.