【问题标题】:Regex to match sentence that contains specific word under a specific heading正则表达式匹配在特定标题下包含特定单词的句子
【发布时间】:2018-07-09 14:55:32
【问题描述】:

示例文本:

JAVA

100 名程序员

101 使用一元运算符 世界各地。

.NET

200 银光是最好的 申请途径

201 个 Windows 应用程序


当我给程序输入时 “JAVA”和“101”。它应该匹配为真。因为,101 出现在标题 - JAVA 下。

但是,当我输入为 “JAVA”和“200”。应该说是假的。因为 200 不在标题 JAVA 下。

这是使用的正则表达式:

String code = "JAVA";
String string = "100 Programmer"

Pattern pattern = Pattern.compile("" + 
escapeString(code) + "((?![\\t][A-Z\\s ]).)*" + escapeString(string) + "", Pattern.DOTALL);

Matcher matcher = pattern.matcher(doc);

boolean isFound = matcher.find();
System.out.println(isFound);


String escapeString(String string) {
String escaped = null;
if (null !== string) {
   escaped = Pattern.quote(string);
}
return escaped;
}

任何人都可以为此提供正则表达式吗?

【问题讨论】:

  • 您的“示例文本”是什么格式的?如何定义标题?
  • 您是否只想将“JAVA”与“101”或“100”匹配,而仅将“.NET”与“200”或“201”匹配?
  • 您在这方面的进展如何?到目前为止,请发布您的代码,包括您自己的正则表达式。
  • 到目前为止你有什么尝试?
  • @JacobBoertjes 是的,所以当我输入“JAVA”和 101 时。这意味着 101 在该标题下。

标签: javascript java regex regex-negation regex-group


【解决方案1】:

你应该声明你是如何编码每个标题下的标题和值的? 我认为答案从这一点开始,你是如何对标题进行分组的。 如果您将每个标题下的值存储在一个字符串中,那么这个正则表达式应该可以正常工作:

String JavaHeader = "100 Programmer";
boolean exists = JavaHeader.matches("100.*")

【讨论】:

    猜你喜欢
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多