Java中匹配‘大写字母+空格+大写字母’模式的正则及字符串分割需求
Java字符串按指定规则分割的解决方案
你需要的分割规则是在「大写字母+空格+大写字母」的空格位置进行分割,正确的正则表达式应该使用正向断言来定位这些空格,避免分割时丢失两边的字母。
正确的正则表达式
(?<=[A-Z])\\s(?=[A-Z])
(?<=[A-Z]):正向后顾断言,确保当前空格的前一个字符是大写字母\\s:匹配需要作为分割点的空格(?=[A-Z]):正向前瞻断言,确保当前空格的后一个字符是大写字母
Java代码示例
public class StringSplitExample { public static void main(String[] args) { String input = "G C / F C / F C / F A / B / F / I"; // 使用正则分割字符串 String[] resultParts = input.split("(?<=[A-Z])\\s(?=[A-Z])"); // 输出目标格式的结果 for (String part : resultParts) { System.out.println("<p><strong>" + part + "</strong></p>"); } } }
输出结果
<p><strong>G</strong></p> <p><strong>C / F</strong></p> <p><strong>C / F</strong></p> <p><strong>C / F</strong></p> <p><strong>A / B / F / I</strong></p>
为什么你之前的正则不生效
你尝试的(\s([a-zA-Z]\s)+)匹配的是「空格 + (字母+空格)重复多次」的模式,和你需要的分割点完全不匹配,自然无法得到预期结果。
内容的提问来源于stack exchange,提问作者Abhay
相关产品推荐
相关产品推荐

