java - 正则表达式匹配Java

标签 java regex

我遇到一个正则表达式匹配大写字母可能后跟小写字母的问题。我想在任何此类比赛后中断,但我似乎无法让它发挥作用。

为了使其更通用 - 我想在正则表达式中的任何匹配之前和之后进行拆分。

示例 string "TeSTString"

想要的结果 -> [Te, S, T, St, ring]

我已经尝试了我能想到的一切,但我被前瞻或后瞻所欺骗。

首先我尝试了[A-Z][a-z]? ,并且匹配完美,但将其删除...

结果-> [ring]

在此之后我做了积极的前瞻(?=([A-Z][a-z]?))给我一些接近的东西...

结果-> [Te, S, T, String]

和后视 (<=?([A-Z][a-z]?))什么都不给...

结果-> [TeSTString]

甚至尝试逆转后视 (<=?([a-z]?[A-Z])) ,进行了绝望的尝试,但这相当不成功。

在我失去理智之前,有人可以给我指明正确的方向吗?

最佳答案

这是一种与预期结果相匹配的复杂模式。

String test = "TeSTStringOne";
System.out.println(
    Arrays.toString(
        //          | preceded by lowercase
        //          |        | followed by uppercase
        //          |        |       | or
        //          |        |       || preceded and followed by uppercase
        //          |        |       ||                  | or
        //          |        |       ||                  || preceded by uc
        //          |        |       ||                  || AND lowercase
        test.split("(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z])|(?<=[A-Z][a-z])")
    )
);

输出

[Te, S, T, St, ring, On, e]

注意

[a-z] 替换为 \\p{Ll},将 [A-Z] 替换为 \\p{Lu} 与重音字母一起使用。

关于java - 正则表达式匹配Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35920731/

相关文章:

RegEx - 索引/阵列命名捕获组?

php - 将 PHP 结束标记转换为注释

Javascript:将带有通配符的路径保存到变量中

java - 如何按 Map<String, Integer> 值的降序获取前 10 个键

java - Oracle、JDBI @SqlBatch - 获取 INSERT 触及的所有行

java - 允许 Java JDK 11 HttpClient 的不安全 HTTPS 连接

regex - 如何使用正则表达式拆分字符串,使用字符串作为分隔符?

java - 在 IntelliJ IDEA 中哪里可以找到已弃用方法的替代方法?

java - 如何在 Hadoop-.20 api 中指定 KeyValueTextInputFormat 分隔符?

c# - 我如何像 Environment.GetCommandLineArgs() 那样解析命令行参数?