java正则表达式查找第一个和最后一个字符

标签 java regex recursion

我正在编写一个程序来递归地确定一个字符串是否为回文。我决定尝试使用正则表达式,但我在理解语法方面遇到了一些麻烦。我需要做的是比较第一个和最后一个字符,看看它们是否相同。我该怎么做呢?

谢谢!

编辑:我发现这很有帮助:AirSource Ltd's answer to Degvik's question

最佳答案

是的,如果第一个和最后一个字符相同,您可以使用正则表达式来确定:

str.matches("(.).*\\1")

这使用“后向引用”来引用“组 1”,它捕获第一个字符。

例子:

"aba".matches("(.).*\\1") // true
"abc".matches("(.).*\\1") // false

然后您可以递归地删除第一个和最后一个字符并再次检查:

public static boolean isPalindrome(String str) {
    return str.length() < 2 || 
        (str.matches("(.).*\\1") && isPalindrome(str.substring(1, str.length() - 1)));
}

关于java正则表达式查找第一个和最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12486905/

相关文章:

java - 由于 Maven 下载问题,重置 java 认证(在 Linux 上)

regex - Perl 中字符串之间的字符匹配计数

python - 从递归嵌套字段列表创建部分字典

javascript - 在 JavaScript 解释器的树遍历算法中存在堆栈溢出问题?

Java 时区和夏令时 - 冬令时

java - Elasticsearch:如何调用与数组长度不一样的Java高级REST客户端

java - 计数以 x 开头的字符串,并存储在 Array Android Studio 中

c - 将字符串解析为多个变量

asp.net-mvc - 从 HtmlHelper 扩展方法中传递的 lambda 表达式获取属性值的最简单方法是什么?

java重载方法