我想用我的正则表达式选择以下文本 /*{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/