Regex 在带有正则表达式的行之前删除
我在PHP中使用Regex 在带有正则表达式的行之前删除,regex,preg-replace,Regex,Preg Replace,我在PHP中使用preg\u replace删除子字符串前面的文本,如 unnecessary stuff unnecessary stuff DELETE ME and some more stuff This line should be the beginning the rest. 与 我怎样才能删除整行的delete ME 我使用{01000}来限制删除。您可以使用此正则表达式来匹配: /^.{0,1000}DELETE ME[^\r\n]*\R/is 详细信息: [^\r\n
preg\u replace
删除子字符串前面的文本,如
unnecessary stuff
unnecessary stuff
DELETE ME and some more stuff
This line should be the beginning
the rest.
与
我怎样才能删除整行的delete ME
我使用
{01000}
来限制删除。您可以使用此正则表达式来匹配:
/^.{0,1000}DELETE ME[^\r\n]*\R/is
详细信息:
:匹配除[^\r\n]*
和\r
\n
:匹配任何unicode行尾字符\R
匹配的内容:
'~(?s)^.{0,1000}DELETE ME(?-s).*\R?~i'
^^^^ ^^^^^
见
(?-s)
内联点调用修改器将使字符类之外的所有
与任何字符(包括所有换行符)匹配,并且(?-s)
将关闭此点调用模式,模式中其右侧的所有
将停止与换行符匹配
见:
内联修饰符(?s)
在.NET、PCRE(C、PHP、R…)、Perl、Python和Java(但不是Ruby)中,您可以使用内联修饰符
(?s)
,例如在(?s)BEGIN.*?结束
。有关三个附加功能(在Python中不可用)的详细信息,请参见上一节:在字符串中间打开它,使用(?-s)
关闭它,或者使用(?s:foo)
将它仅应用于非捕获组的内容
以及:
✽ 除了在Ruby中,(?s)
激活“单行模式”,即DOTALL
模式,允许点匹配换行字符。在Ruby中,(?m)
另外,使用
\R?
如果删除我
出现在字符串的最后一行,因为\R?
匹配1或0个换行符,那么您也将在整个字符串的末尾进行匹配。使用:/^.{01000}删除我[^\n]*\n/是不是很好!如果您发布答案,我可以接受它来完成问题。更简单的是,使用内联修饰符并解释字符串的结尾:/(?s)^。{01000}删除我(?-s)。*\R?/I
您解决了问题。只是一个后续问题。如何限制DELETE ME
行的长度。例如,仅当行少于100个字符时匹配。如何将`{0100}包含到模式的第二部分中?您可以使用:/^.{01000}删除我[^\r\n]{0,99}\r/is
愚蠢的我。我试图把{0100}
放在*
之后,但忘记了{0100}
做*
:)
'~(?s)^.{0,1000}DELETE ME(?-s).*\R?~i'
^^^^ ^^^^^