簡體   English   中英

如何使用正則表達式刪除字符串末尾括號內的數字

[英]How to remove a number inside brackets at the end of string with regex

希望有一個遞歸函數,它接受一個字符串並刪除結尾'[x]'。 例如'abc [1] [3]'需要是'abc [1]'。 該字符串也可以是'abc [1] [5] [2]',並且需要是'abc [1] [5]'。

我正在嘗試str.replace(/[\\\\\\[\\d\\\\\\]]$/, '')但它只替換最后一個結束括號並忽略其他所有內容。

有任何想法嗎?

您不需要外部封閉支架。 嘗試: str.replace(/\\[\\d\\]$/, '');

如果保證字符串始終包含[number] ,則可以使用substringlastIndexOf

str = str.substring(0, str.lastIndexOf('['));

更新:或者只是添加一個測試:

var index = str.lastIndexOf('[');
if(index > -1) {
    str = str.substring(0,index);
}
\[\d+\]$

應該說任何括號后跟任意數字后跟一個括號,都在字符串的末尾。

我說“應該”,因為我仍然不像我想要的那樣精通正則表達式,但是在regexr(用於測試正則表達式的一個漂亮的小AIR應用程序)中,它似乎有效。

編輯:

如果有人想玩regexr,請訪問http://gskinner.com/RegExr/desktop/ 我與它沒有任何關系,我認為這是一個很好的工具。

\\[\\d+\\]([^]]*)$適用於Python,應該可以在Javascript中運行。 這允許在[x]之后的尾隨位,這些位留下。 我相信這就是為什么你沒有看到預期的結果,因為你留下尾隨空白。 另請注意,我更改了正則表達式以允許x為任意數量的數字 - 如果這不是您想要的,請刪除+

這是代碼:

import re
s = 'abc [1] [5] [2]'
while True:
  new_s = re.sub(r'\[\d+\]([^]]*)$', r'\1', s)
  if new_s == s:
    break
  s = new_s
  print s

和輸出:

abc [1] [5] 
abc [1]  
abc   

/(.*)([\\[].*[\\]]\\Z)/應該這樣做,你需要使用匹配方法,它將在一個數組中提供兩個組,一個具有您需要的字符串,另一個以其結尾。

暫無
暫無

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

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