我们有以下格式的新闻发布数据。 \t
是一个实际的制表符。
Headline\tDate\tNews
问题是过去有一些像重复或额外字段这样的问题..
Government Shutdown Latest News {null}{10/15/2013} {10/15/2013} words words words.
Email Flow in Exchange {null}{10/17/2013} {10/17/2013} words words words....
Should This be banned? {null}{10/23/2013} {10/23/2013} words words words....
我需要移除第一个括号字段{null}
和第三个重复字段以及第三个字段后面的制表符即可。
所以最初这些数据的每一行都应该是这样的。
Government Shutdown Latest News {10/15/2013} words words words....
Email Flow in Exchange {10/17/2013} {10/17/2013} words words words....
Should This be banned? {10/23/2013} {10/23/2013} words words words....
我在删除这两个字段和标签时遇到了问题。它与所有人都匹配。
preg_replace('/\{.*?\}(?={)|\{.*?\}\t/', '', $text);
答案 0 :(得分:3)
您可以为作业使用负面反对。
(?<![^\s]){[^}]*}\t?
正则表达式:
(?<! look behind to see if there is not:
[^\s] any character except: whitespace (\n, \r, \t, \f, and " ")
) end of look-behind
{ '{'
[^}]* any character except: '}' (0 or more times)
} '}'
\t? '\t' (tab) (optional)
注意:您可以在不转义{ }
的情况下执行此操作。
答案 1 :(得分:2)
你可以尝试这种模式:
$result = preg_replace('~[^\s}]\s*\K{null}|{[0-9]{2}/[0-9]{2}/[0-9]{4}}\t(?!\s*[^{])~', '', $text);