首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配具有特定背引号组合的单词

匹配具有特定背引号组合的单词
EN

Stack Overflow用户
提问于 2017-03-20 14:18:34
回答 1查看 198关注 0票数 2

我需要用regex匹配一个单词,它位于反引号/反引号之间,最多有1和2个反引号。

匹配案例

  1. word应该以一个或两个反引号开头,以N个反引号结尾。
  2. word应该以N个反引号开头,以一个或两个反引号结尾。

不应与匹配

  1. 单词的开头和结尾有三个以上的反引号。

示例

代码语言:javascript
复制
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

比赛:

  1. 需求
  2. 单词
  3. 谎言
  4. 反引号
  5. 应该

尝试

代码语言:javascript
复制
    Pattern PATTERN = Pattern.compile("`{1,2}\\w+|\\w+`{1,2}", Pattern.DOTALL);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-20 14:22:59

你可以用

代码语言:javascript
复制
(?<!`)`{1,2}\b(?!`)(.*?)\b`+

regex演示。得到组1的值。

详细信息

  • (?<!`) -当前位置之前不应该有一个`
  • `{1,2} -1或2 `匹配
  • \b -单词边界要求下一个字符为字符
  • (?!`) -后排1或2个后的下一个字符不能是后退。
  • (.*?) -匹配和捕获任何0+字符(考虑使用Pattern.DOTALL进行跨行匹配)
  • \b -一个单词边界,下一个回勾应该在单词char前面。
  • `+ -1或更多的回车。

Java演示

代码语言:javascript
复制
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)); 
} 
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42905999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档