Jag*_*ram 2 java regex pattern-matching
我需要使用正则表达式匹配一个单词,它位于反引号/反引号之间,最多有1和2个反引号.
匹配案例
不应该匹配
例
I `need` to match a ``word`` from a ```sentence``
Which `lies`` between `backquotes```` and this ``should```` also match
and ```more``` than ```three```````` quotes ```````not``` matched
Run Code Online (Sandbox Code Playgroud)
火柴:
尝试
Pattern PATTERN = Pattern.compile("`{1,2}\\w+|\\w+`{1,2}", Pattern.DOTALL);
Run Code Online (Sandbox Code Playgroud)
你可以用
(?<!`)`{1,2}\b(?!`)(.*?)\b`+
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示.获取Group 1值.
细节:
(?<!`) - 当前位置不应该以a开头 ` `{1,2}- `匹配1或2\b - 单词边界要求下一个char为单词char(?!`) - 1或2次反击后的下一个角色不能成为backtrick(.*?)- 匹配并捕获任何0+字符(考虑使用Pattern.DOTALL匹配跨行)\b - 一个单词边界,下一个反引号应该以一个单词char开头`+ - 一个或多个反引号.请参阅Java演示:
String s = "I `need` to match a ``word`` from a ```sentence`` Which `lies`` between `backquotes```` and this ``should```` also match and ```more``` than ```three```````` quotes ```````not``` matched";
Pattern pattern = Pattern.compile("(?<!`)`{1,2}\\b(?!`)(.*?)\\b`+");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println(matcher.group(1));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |