簡體   English   中英

正則表達式從字符的倒數第二個出現開始顯示字符串

[英]Regex to display a string from the second last occurence of a character

需要一個正則表達式來顯示字符的倒數第二個出現的字符串

示例:“ / folder1 / folder2 / folder3 / folder4 /”

在這種情況下,如果我要求從last開始第二次出現斜杠(/),它會出現在folder4之前,並且我希望從字符的第二次出現返回子字符串。

即返回字符串應為folder4 /

在php中:

$str = "/folder1/folder2/folder3/folder4/";
$str = preg_replace('#^.*/([^/]+/[^/]*)$#', "$1", $str);

在perl中:

$str = "/folder1/folder2/folder3/folder4/";
$str =~ s#^.*/([^/]+/[^/]*)$#$1#;
  • 查找令牌的最后一次出現
  • 將結果- 1作為第二個lastIndexOf()參數
  • 將此結果作為substring()參數

像這樣:

final String example = "/folder1/folder2/folder3/folder4/";
final String result  = example.substring(example.lastIndexOf('/', example.lastIndexOf('/') - 1), example.length() - 1);

System.out.printf("%s\n", result);

或更具可讀性

final String example = "/folder1/folder2/folder3/folder4/";
int pos;

pos = example.lastIndexOf('/');
pos = example.lastIndexOf('/', pos - 1);
result = example.substring(pos, example.length - 1);

System.out.println(result);

在Java中:

    String fileName = "/folder1/folder2/folder3/folder4/";
    ArrayList<String> arr = new ArrayList<>();

    Pattern p = Pattern.compile("(.*?)\/");
    Matcher m = p.matcher(fileName);
    while(m.find())
    {
        arr.add(m.group(1));            
    }       
    return arr.get(arr.size()-2);

其中2出現。 這使您可以將所有內容分組,以便您也可以處理其他組。

暫無
暫無

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

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