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
表示第一个分组的内容,即正则表达式中的([^_]+)
部分。这样就可以将整个字符串替换为我们所需的子字符串了。
希望这样能够解释清楚上述代码的工作原理。