需要帮助Preg_replace正则表达式

时间:2010-02-11 23:04:17

标签: php regex preg-replace

这些word1和word2在括号中

想要删除整行依赖于word2

[word1] something-line-text [word2] some text again

想要用另一个取代某些文字取决于word2

[word1] something-line-text [word2] some text again

into

REPLCACEDTEXT something-line-text some text again

some line text (something/something)

into

(something/something) some line text

1 个答案:

答案 0 :(得分:0)

我不是100%确定你想要什么,但是这会找到[word1]和[word2]并且只有当两者都在线时才删除它们:

$line = preg_replace('/word1(.*)word2/', '$1', $line);

此方法可以匹配部分单词,您可能会留下额外的空格。稍微好一点就是:

$line = preg_replace('/\s?word1\b(.*)\s?word2\b/', '$1', $line);

这确保它们使用单​​词边界和空格作为整个单词匹配。我在一侧使用空间,以便消耗额外的空间。如果你不在乎,只需在每个单词的两边使用\b

第二种情况,将第一个带括号的短语移动到行的开头:

$line = preg_replace('/(.*)(\(.*?\))/', '$2 $1', $line);

修改

看到你的例子之后,我想你想要:

$line = preg_replace('/^\[Scene\].*/', '', $line);

$line = preg_replace('/\[\.*?\]\s+(.*)(\[.*?\])/', '$2 $1');

$line = preg_replace('/(.*)\s+(\(.*?\))/', '$2 $1');