String myString = "abc.kiransinh.bapu.abc.events.KiranSinhBorasibBapu";
Pattern regex = Pattern.compile("[^.]+(?=[^.]*$)[^Bapu]");
System.out.println(myString);
Matcher regexMatcher = regex.matcher(myString);
if (regexMatcher.find()) {
String ResultString = regexMatcher.group();
ResultString=ResultString.replaceAll("(.)(\\p{Lu})", "$1_$2").toUpperCase();
System.out.println(ResultString);
}
期望输出为:KIRAN_SINH_BORASIAB
我试过上面的代码。只想使用正则表达式。 尽管我使用了 replaceAll 方法。
仅使用 Regex 可能会获得所需的输出。 我是正则表达式的新手。非常感谢任何帮助。 提前致谢:-)
最佳答案
你可以使用这个正则表达式来匹配你想要的字符串:
String re = "(?<=\\.)(?=[^.]*$)\\p{Lu}\\p{L}*?(?=\\p{Lu}(?=[^\\p{Lu}]*$))";
Pattern pattern = Pattern.compile(re);
使用 Matcher#find
获取匹配的文本。
Matcher regexMatcher = pattern.matcher( input );
if (regexMatcher.find()) {
System.out.println( regexMatcher.group() );
}
正则表达式分解:
(?<=\.) # lookbehind to assert preceding char is DOT
(?=[^.]*$) # lookahead to assert there is no further DOT in text
\p{Lu} # match a unicode uppercase letter
\p{L}*? # match 0 or more of unicode letters (non-greedy)
(?=\p{Lu}(?=[^\p{Lu}]*$)) # make sure next char is uppercase letter and further
# (?=[^\p{Lu}]*$) makes sure there is no uppercase letter after
关于java - 使用 RegEx 在最后一个点之后查找字符串并删除以大写字母开头的最后一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32350388/