Regex 无法转换正则表达式
此正则表达式:Regex 无法转换正则表达式,regex,boost,Regex,Boost,此正则表达式: "REGION\\((.*?)\\)(.*?)END_REGION\\((.*?)\\)" 当前找到此信息: REGION(Test) my user typed this END_REGION(Test) #region REGION my user typed this #endregion END_REGION 我需要它来查找以下信息: REGION(Test) my user typed this END_REGION(Test) #region REGIO
"REGION\\((.*?)\\)(.*?)END_REGION\\((.*?)\\)"
当前找到此信息:
REGION(Test) my user typed this
END_REGION(Test)
#region REGION my user typed this
#endregion END_REGION
我需要它来查找以下信息:
REGION(Test) my user typed this
END_REGION(Test)
#region REGION my user typed this
#endregion END_REGION
我试过:
"#region\\ (.*?)\\\n(.*?)#endregion\\ (.*?)\\\n"
它告诉我模式分配失败了。有人能解释一下我做错了什么吗?我不熟悉正则表达式。问题似乎在于多行
\n
。我的建议是使用修饰符s
,以避免多行复杂性,如:
/#region\ \(.*?\)(.*?)\s#endregion\s\(.*?\)/s
修饰符“单行”使s
匹配所有字符,包括换行符
\n
。我的建议是使用修饰符s
,以避免多行复杂性,如:
/#region\ \(.*?\)(.*?)\s#endregion\s\(.*?\)/s
修饰符“单行”使s
匹配所有字符,包括换行符
#region(.*)?\n(.*)?#endregion(.*)?
在这里测试时,这对我很有用:
当使用原始文本和正则表达式时,唯一的问题是结尾没有新行,因为示例文本没有新行。试试这个:
#region(.*)?\n(.*)?#endregion(.*)?
在这里测试时,这对我很有用:
当使用原始文本和正则表达式时,唯一的问题是,我没有在末尾添加新行,因为示例文本没有新行。使用boost构建此正则表达式不会失败,即使使用扩展的修饰符 将字符串添加到编译器:
"#region\\ (.*?)\\\n(.*?)#endregion\\ (.*?)\\\n"
#region\ (.*?)\\n(.*?)#endregion\ (.*?)\\n
编译器解析后:
"#region\\ (.*?)\\\n(.*?)#endregion\\ (.*?)\\\n"
#region\ (.*?)\\n(.*?)#endregion\ (.*?)\\n
看来你在新线上越狱的次数太多了
如果将正则表达式表示为扩展为boost,则未转义的磅符号
将被解释为注释。在这种情况下,你需要避开英镑符号
\#region\ (.*?)\\n(.*?)\#endregion\ (.*?)\\n
如果不使用展开的修改器,则不需要转义空格字符。采用该大头钉,您可以移除空间上的转义,并修复换行转义,它看起来像是原始的(传递给正则表达式引擎的内容): 并将其作为源代码字符串:
"#region (.*?)\\n(.*?)#endregion (.*?)\\n"
使用boost构造这个正则表达式不会失败,即使使用扩展的修饰符也是如此 将字符串添加到编译器:
"#region\\ (.*?)\\\n(.*?)#endregion\\ (.*?)\\\n"
#region\ (.*?)\\n(.*?)#endregion\ (.*?)\\n
编译器解析后:
"#region\\ (.*?)\\\n(.*?)#endregion\\ (.*?)\\\n"
#region\ (.*?)\\n(.*?)#endregion\ (.*?)\\n
看来你在新线上越狱的次数太多了
如果将正则表达式表示为扩展为boost,则未转义的磅符号
将被解释为注释。在这种情况下,你需要避开英镑符号
\#region\ (.*?)\\n(.*?)\#endregion\ (.*?)\\n
如果不使用展开的修改器,则不需要转义空格字符。采用该大头钉,您可以移除空间上的转义,并修复换行转义,它看起来像是原始的(传递给正则表达式引擎的内容): 并将其作为源代码字符串:
"#region (.*?)\\n(.*?)#endregion (.*?)\\n"
在转义换行符序列时,正则表达式有一个额外的反斜杠
\\\n
,请改用\\s*
。另外,对于最后一个捕获组,您可以使用贪婪量词代替,并删除换行符序列
#region\\ (.*?)\\s*(.*?)#endregion\\ (.*)
在转义换行符序列时,正则表达式有一个额外的反斜杠
\\\n
,请改用\\s*
。另外,对于最后一个捕获组,您可以使用贪婪量词代替,并删除换行符序列
#region\\ (.*?)\\s*(.*?)#endregion\\ (.*)
你在用什么语言?你在用什么语言?