在 Java 中获取任何 PHP 内容的正确正则表达式是什么 header()
在 <? ?>
内或 <?php ?>
标签而不评论?我一直在拔头发。我一直在阅读正则表达式手册,但无论我尝试什么都行不通。
(.*)header\s+\((\"|\').*?(\"|\')\)\;?(.*)
这是我一直在测试我的表情的地方。我什至还没有开始添加 PHP 标记,因为我无法使基本表达式起作用。我在延迟此功能的第 3 天...
另一个尝试(感谢 chris85)有效
(.*)header\s*\(("|')(.*)("|')\)\;(.*)
最佳答案
您的第一个正则表达式无法匹配,因为 +
量词需要匹配,*
出现零次或多次。所以 \s+
需要至少 1 个空格,但是 header(
没有空格。您可以使用以下正则表达式来提取 PHP header 调用的内容:
header\(('|")([^\1]+?)\1\)
('|")
是单引号或双引号。与(["'])
相同。 [^
是一个否定字符,意味着不允许在其中列出的所有字符。 \1
是对我们匹配的第一个字符的反向引用(这是一个封装引号)。 +
一直运行,直到我们遇到预期的结束引号,然后是文字 )
。
这里还有一个 regex101 演示,以防我的描述的某些部分不清楚,https://regex101.com/r/D9rXDT/2/ .
关于java - 为 Headers 匹配 PHP 中的任何 PHP header() 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42866807/