正则提取

payout_sitobank_0001 得到 sitobank

payout_tarspay_0002 得到 tarspay

String str1 = "payout_sitobank_00";01
        String str2 = "payout_tarspay_0002";
        String extractedString1 = extractString(str1);
        String extractedString2 = extractString(str2);
        System.out.println(extractedString1);
        System.out.println(extractedString2);
".*_([^_]+)_.*"

  • .*:匹配任意字符零次或多次。这里使用.*来匹配字符串开头的任意字符。
  • _:匹配下划线字符 _
  • ([^_]+):匹配一个或多个非下划线字符,并且将它们作为第一个分组。
  • _:匹配下划线字符 _
  • .*:匹配任意字符零次或多次。这里使用.*来匹配字符串末尾的任意字符。

因此,整个正则表达式可以匹配字符串中位于两个下划线之间的子字符串。通过使用replaceAll方法,我们可以将整个字符串替换为第一个分组中的内容(即子字符串)。

replaceAll方法中,我使用"$1"作为替换的内容。$1表示第一个分组的内容,即正则表达式中的([^_]+)部分。这样就可以将整个字符串替换为我们所需的子字符串了。

希望这样能够解释清楚上述代码的工作原理。

发表评论

邮箱地址不会被公开。