java - 为什么id不匹配/\*{2}(.*)\*/

标签 java regex

我想用我的正则表达式选择以下文本 /*{2}(.*)*/

 /**
 * <p>
 * and writes file to {@link #writeToFile(String, java.util.Map) writeToFile} \\n
 * ddddddddddddd
 * </p>
 * <p>bla bla</p>
 *
 * and get from class.
 *
 * @param filePath
 * @param classes
 * @return
 * @throws Exception
 */

但它不匹配。我不知道我做错了什么。这就是我的阅读方式,找到 \ 后跟我的两个 * 实例,然后匹配任何内容,直到找到 * 后跟 /

但它只与 /** 匹配,其他的都被忽略。

最佳答案

您需要通过在其前面放置一个\ 来转义*。当它未转义时,它将被解释为您的模式中使用的任意重复量词:(.*)

转义后,你的模式应该是这样的,然后:

/\*{2}(.*)\*/

如果您的语言要求您对字符串中的反斜杠进行转义,请确保对它们进行两次转义。在 Java 中,模式 \\* 表示正则表达式 \*,它匹配 * 文字。


请注意,要解析此注释语法,大多数语言将在第一个 */ 处停止,这就是为什么将 * 量词设为 lazy 可能会更好附加 ? 到它:

/\*{2}(.*?)\*/

这样,如果您针对例如运行正则表达式/** foo bar */*/,只会匹配foo bar(不包括后面的*/,与一个 greedy quantifier )。

关于java - 为什么id不匹配/\*{2}(.*)\*/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20951938/

相关文章:

java - 使用 Stream...peek() 创建的变量的测试方法

java - 用于 IntelliJ 多线程测试的 Java 工具

java - 打开并写入文件 Java

从 Wicket Java 进行 JavaScript 函数调用失败

c# - 允许字母、数字、小数、空格和下划线的正则表达式模式

regex - 使用 sed 替换第一个 ntp 服务器

java - docx4j 转换 w :numPr convert to <ul>?

php - 用表达式中的一项替换花括号表达式

regex - 如何在谷歌表格公式中提取精确的 10 位 ISBN10

python - 正则表达式:查找大于特定值的数字(具有不同的小数长度)