0

もう1つの正規表現で立ち往生しています。

サンプル入力:

project description

正規表現を書きたいです。「説明」という単語が見つかり、その前に「プロジェクト」という単語がある場合は、「プロジェクトの説明」の前に「<プロジェクト>」を追加します。

期待される出力:

<project>project description

次の正規表現、n 置換文字列を書きましたが、機能しません: regex : ((?<=project) description) and replacement string:<project_description>$0

現在の正規表現と置換文字列を使用すると、次の出力が得られます。

project<project> description

誰でも何か提案できますか?


**

編集された質問

** わかりました。私が何を望んでいるのかを人々に正確に伝えることについて、私は十分に明確ではないと思います。

問題を一般的かつ明確にするために、別の言い方をします。

「y」が「x」の後に来る場合は、<tag>xy の前に追加します。

正規表現を使用してこれを行うことは可能ですか?

4

3 に答える 3

3

これに後読みを使用している理由がわかりません-次のことができます:

/project description/  ->  <project>$0

PHPでは、これは

echo preg_replace('/project description/', '<project>$0', $str);
于 2009-10-26T12:35:23.913 に答える
2

新しく追加されたケースに一致するように Greg の正規表現を拡張します。

/Details\sof\sproject|project(\sdescription|s\sundertaken|\(s\)\ssummary)/

//replace all the matches with

<project>$0

を使用して、後でこの正規表現に新しいケースを追加できます|


編集:答えるIf "y" comes after "x", then prepend <tag> to xy.

/x\s\y/と置き換えます<tag>$0

これは<tag>、x-space-y のすべての出現に先行します

于 2009-10-26T13:45:04.053 に答える
1

編集された回答:

これは後読みには適していないようです。次のように、全体を置き換えてみませんか。

s/(project|other|word) description/<project>$1 description/

<project>これによりproject、 、other、またはのword後に が続く場合、単語が先頭に追加されdescriptionます。

于 2009-10-26T12:37:04.233 に答える