java - 正则表达式查找除数字后面的所有字符

标签 java regex

我不擅长正则表达式,但我正在努力寻找一种方法来将java中字符串字母的大小写从小写更改为大写

Java 有一个非常好的方法,称为 toUpperCase(),但是,由于两个原因,这并没有真正帮助我。

首先,我想获得这样一个正则表达式的引用,因为我在任何地方都找不到它,并且 其次,因为它会改变所有字符的大小写。

但在某些情况下,我想保持较低的字符以避免混淆,并使其看起来更好。

Good   Bad
2i   =  2I
2o   =  2O
1st  = 1ST
2nd  = 2ND
etc...

是否也可以添加条件?例如

"don't replace if the sequence 'st' appears after the number '1' even if there is a space between"
"don't replace if the sequence 'nd' appears after the number '2' even if there is a space between"
etc...

我想知道是否有人可以帮助我生成正则表达式来选择这些字符

提前谢谢

最佳答案

如果这是您需要的,请查看:

final String[] s = { "2 nd blah", 
                "1st foo", 
                "foo 2nd bar", 
                "blahblah1stfounditimmediately", 
                "blah 3rd foo", 
                "blah55th foo", 
                "66 th bar"
                 };
        final Pattern p = Pattern.compile("(1 ?ST|2 ?ND|3 ?RD|\\d+ ?TH)");
        Matcher m = null;
        String t;
        for (final String x : s) {
            t = x.toUpperCase();
            m = p.matcher(t);
            while (m.find()) {
                System.out.println(x + " ---> " + t.replaceAll(m.group(1), m.group(1).toLowerCase()));
            }
        }

以上代码的输出:

2 nd blah ---> 2 nd BLAH
1st foo ---> 1st FOO
foo 2nd bar ---> FOO 2nd BAR
blahblah1stfounditimmediately ---> BLAHBLAH1stFOUNDITIMMEDIATELY
blah 3rd foo ---> BLAH 3rd FOO
blah55th foo ---> BLAH55th FOO
66 th bar ---> 66 th BAR

编辑以获得更好的代码格式。

关于java - 正则表达式查找除数字后面的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9378191/

相关文章:

java - Gradle 中的“提供”依赖项

java - 反序列化空值以使用 Jackson 进行枚举

regex - 中间件上的通配符或正则表达式 Node 表示安装路径

C# Regex "Verbose"就像在 Python 中一样

java - 在Java中执行RFC计算的算法

java - PrimeFaces 3.0 : How to change tab focus with `<p:tabView>`

java - 出现 NumberFormatException 和 parseInt 错误

java - 安卓线程和服务

java - 在java中使用正则表达式进行注释检测时出错

regex - 如何减少正则表达式的计算时间