java - Matlab中多行注释的正则表达式
问题描述
我尝试编写一个匹配此模式的正则表达式:
%{
...
...
%}
它还应该匹配:
sth %{
...
...
%}
或者
%{
something%}
%}again something
%}
但不是:
%{something
...
%}
或者
%{
...
%}something
或者
%{
...
something%}
所以它匹配任何字符后跟 %{ 的行和只有 %} 的行之间的所有内容(参见多行注释 Matlab:https ://fr.mathworks.com/help/matlab/matlab_prog/comments.html )
我试过这个:
^.*%\{\n(^((?!%\}).)*\n)*(\s)*%\}\n
它可以很好地找到块,但例如,它不匹配:
%{
%}something
...
%}
你有什么想法 ?
解决方案
您可以使用
^.*%\{(?:\n(?!.*%\{).*)*\n\s*%\}$
请参阅正则表达式演示。将它与多行修饰符一起使用。
如果您的正则表达式引擎是 Java,您可以使用\R
匹配任何换行符而\h
不是\s
匹配任何水平空格:
^.*%\{(?:\R(?!.*%\{).*)*\R\h*%\}$
请参阅此正则表达式演示。
细节
^
- 一行的开始.*
- 尽可能多的除换行符以外的任何 0+ 字符%\{
- 一个%{
子串(?:\n(?!.*%\{).*)*
- 0个或多个序列\n(?!.*%\{)
%{
-当前行的任何地方都没有跟在换行符后面.*
- 尽可能多的除换行符以外的任何 0+ 字符
\n
- 换行符\s*
- 0+ 个空格%\}
- 一个%}
子串$
- 行结束。
推荐阅读
- javascript - Nodejs - 捕获由包含嵌套异步获取的函数返回的对象数组
- javascript - (React Frontend) 后端收到数据时,无法访问返回的对象
- android - 我想要自定义 UI 与破折线相同的票
- firebase - 如何使用 uid 文档 ID FirebaseAuth Firestore 获取 Firestore 字段信息
- javascript - RegEx l33t 说话识别器?
- r - 使用相同数据集进行预测时,预测和寓言包返回的参数略有不同
- java - 如何在没有参数的情况下为对象设置值
- node.js - Docker 容器无法找到更新的节点模块
- wordpress - 无法连接到我的本地 MAMP Wordpress 站点
- mongodb - MongoDB 如何使用聚合代替以下查询