仅使用正则表达式在字符串中查找中间字符

Posted

技术标签:

【中文标题】仅使用正则表达式在字符串中查找中间字符【英文标题】:finding middle character in string using regex only 【发布时间】:2013-06-23 04:29:59 【问题描述】:

如何仅使用正则表达式找到中间字符

例如,这显示了预期的输出

Hello -> l

world -> r

merged -> rg(偶数次见此)

hi -> hi

I -> I

我试过了

(?<=\w+).(?=\w+)

【问题讨论】:

我很好奇你为什么要为此使用 RegEx 的开销。 @BLaZuRE 学习正则表达式 @NAMO 这不是学习正则表达式的好方法。了解如何在需要它们的情况下使用它们。 @NAMO 你可以在这里阅读正则表达式regular-expressions.info/wordboundaries.html 正则表达式并不能解决所有问题。一般来说,他们非常不擅长解决需要数数或记住数字的问题。 【参考方案1】:

正则表达式不能以您正在寻找的方式计算。这看起来像是正则表达式无法完成的事情。我建议编写代码来解决这个问题。

【讨论】:

+1 - 到目前为止,这是唯一真正回答问题的答案。 OP 特别想使用正则表达式来做到这一点......以了解正则表达式的限制。【参考方案2】:
String str="Hello";
String mid="";
int len = str.length();
if(len%2==1)
    mid= Character.toString(str.getCharAt(len/2));
else
    mid= Character.toString(str.getChatAt(len/2))+ Character.toStringstr.getCharAt((len/2)-1));

这应该可行。

【讨论】:

一起添加到字符不会导致串联(即使以相反的顺序)。无论如何,OP 只需要正则表达式。【参考方案3】:
public static void main(String[] args) 
        String s = "jogijogi";
        int size = s.length() / 2;
        String temp = "";
        if (s.length() % 2 == 0) 
            temp = s.substring(size - 1, (s.length() - size) + 1);
         else if (s.length() % 2 != 0) 
            temp = s.substring(size, (s.length() - size));
         else 
            temp = s.substring(1);

        

        System.out.println(temp);
    

【讨论】:

不回答这个问题......特别是如果你考虑到他提出这个问题的 OP 陈述的原因。

以上是关于仅使用正则表达式在字符串中查找中间字符的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式查找带空格的整数中的无效字符

RX学习笔记:正则表达式

正则表达式仅查找数字+文本的字母数字组合,无特殊

将字母和数字匹配在一起或仅匹配字母的正则表达式

正则表达式:数字开头中间字母结尾数字

正则表达式匹配特定长度的字符串,中间有空格(任何地方)