拆分带有字母,数字和标点符号的字符串

时间:2013-06-04 09:52:55

标签: java regex

如何拆分

等字符串
wo.rd55hello?35.7e+2CAPS!-78.00E-7

wo.rd 55 hello? 35.7e+2 CAPS! -78.00E-7

2 个答案:

答案 0 :(得分:0)

自Java Regex.Split()以来的一种新方法似乎不会在结果中保留分隔符,即使它们包含在捕获组中:

Pattern regex = Pattern.compile(
    "[+-]?           # Match a number, starting with an optional sign,\n" +
    "\\d+            # a mandatory integer part,\n" +
    "(?:\\.\\d+)?    # optionally followed by a decimal part\n" +
    "(?:e[+-]?\\d+)? # and/or an exponential part.\n" +
    "|               # OR\n" +
    "(?:             # Match...\n" +
    " (?![+-]?\\d)   # (unless it's the beginning of a number)\n" +
    " .              # any character\n" +
    ")*              # any number of times.", 
    Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.COMMENTS);
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    matchList.add(regexMatcher.group());
} 

请注意,此正则表达式与“{1}}或1.之类的”缩写“十进制数字不匹配 - 它假定十进制数始终为整数部分和小数部分。如果需要包含这些案例,则需要增加正则表达式。

答案 1 :(得分:0)

您可以使用此网站开发您的正则表达式:http://gskinner.com/RegExr/它有一个令牌库和描述。它还具有实时亮点。你可以看到结果(你想要的)。它非常易于使用,我认为有一个桌面版本。