1
'@^(?<!h2.).*\s*\n@'

还有这个

'@^(?<!h2.).*\n@'

不要在以下文件上

la-la-la

h2. ohoho

abc
def

由 file_get_contents() 在字符串中读取

实际上,正则表达式在以下表达式中被调用

TextileThis(preg_replace('@^(?<!h2.).*\s*\n@','',file_get_contents($that_file)));

所以我只是希望文件的第一个字符串如果不匹配就消失,^h2\..*\s*$但由于我不能在 php 中说“不匹配那个正则表达式”,所以我不得不使用这种“lookbehind”形式。

我应该提一下,这两种正则表达式形式都有效,但第一种形式效果很好,第二种形式我得到了h2.未经纺织品处理并保持原样的路线。Textile 要求h2.字符串与下面的文本间隔一个间隔,仅此而已,所以我只是不明白为什么它没有被解析以及这些正则表达式实际上如何影响行。

我还检查了我的源文件,没有尾随空格。

4

1 回答 1

2

我不明白您的问题,但我尝试向您解释这些正则表达式之间的区别

  1. @^(?<!h2.).*\s*\n@

    还有这个

  2. @^(?<!h2.).*\n@

\s是一个空白字符,这意味着它还包括换行符,例如\rand \n

所以1.也将删除第二个空行,因为\s匹配第一行末尾的换行符,而您的显式\n将匹配第二行末尾的换行符。

您的第二个表达式只会删除第一行,因为它\n已经在第一行的末尾匹配,并且正则表达式将使第二个空行不匹配。

因此,我假设您对第二个正则表达式的问题来自结果字符串开头的空行。

于 2012-09-25T07:19:24.613 回答