繁体   English   中英

字符串和符号Java之间的正则表达式

[英]Regular expression between a string and symbol Java

我需要为以下字符串生成一个正则表达式。

我已经尝试过rule [a-zA-Z0-9 .,/!()-+=_:$@#'&*]+\\\\ {但不起作用

rule apt_regin_2011_32bit_stage1 {

我需要解析apt_regin_2011_32bit_stage1我该怎么做?

我在Java中收到此错误:

java.util.regex.PatternSyntaxException: Illegal repetition near index 36
rule [a-zA-Z0-9 .,/!()-+=_:$@#'&*]+\ {

索引36是倒数第二个字符(空格)

您需要转义模式末尾的{ (导致非法重复错误)和字符类中的- (以使其无法形成范围并被视为文字连字符),并将字符类括在括号中定义组,然后访问“组1”内容。

String s = "rule apt_regin_2011_32bit_stage1 {";
Pattern pattern = Pattern.compile("rule ([a-zA-Z0-9 .,/!()\\-+=_:$@#'&*]+) \\{");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
    System.out.println(matcher.group(1)); 
} 

参见Java演示

请注意,您似乎可以将样式与仅

"rule\\s+(\\S+)\\s+\\{"

请参阅正则表达式演示,其中\\S+匹配一个或多个非空白符号, \\s+匹配一个或多个空白符号。

这意味着您甚至可以使用空格分割字符串并获取第二个元素,但这取决于您选择正确的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM