1

<p>正規表現を使用して、タグで始まり、が含まれる文字列を照合しようとしていsome specific contentます。次に、その特定の段落タグからページの最後まですべてを置き換えたいと思います。

式を使用してみまし<p.*?some content.*</html>たが、最初に表示された<p>タグを取得してから、最後まで続きます。コンテンツの直前の段落タグのみを認識し、段落タグとコンテンツの間に他のコンテンツやタグを許可するようにします。

some specific content正規表現を使用して、コンテンツの前に表示される最初の段落タグに戻り、そこから最後まですべてを選択するにはどうすればよいですか?

それが役立つ場合は、EditPad Proの「検索と置換」機能を使用しています(ただし、これは正規表現を使用するすべてのものに適用できます)。

4

2 に答える 2

0

まず、これはJavaコードですが、他の正規表現エンジン/プログラミング言語に簡単に適合させることができると思います。

したがって、私が理解していることから、特定の入力に、<p>ターゲットコンテンツ/フレーズで始まり、直後に続く部分がある状況が必要です。次に、最初のタグに続くすべてのもの<p>を他のコンテンツに置き換えたいですか?

それが正しければ、次のようなことを行うことができます。

String input; // holds your input text/html
String targetPhrase = "some specific content"; // some target content/phrase
String replacement; // holds the replacement value

Pattern p = Pattern.compile("<p[^>]*>(" + targetPhrase + ".*)$", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(input);
m.replaceFirst(replacement);

もちろん、上記のコメントで述べたように、HTMLに正規表現を使用することは本当に望ましくありません。

または、タグがそれだけで、プロパティなどがないことがわかっている場合は、<p>代わりにサブストリングを試すことができます。

したがって、たとえば、を探している場合は"<p>some specific content"、次のようなものを試すことができます。

String input; // your input text/html
String replacement; // the replacement value(s)

int index = input.indexOf("<p>some specific content");
if (index > -1) {
    String output = input.substring(0, index);
    output += "<p>" + replacement;

    // now output holds your modified text/html
}
于 2012-06-28T18:47:28.497 に答える
0

簡単な入力には正規表現を使用します

<p[^<]*some content.*<\/html>

しかし、正規表現を使用する方が安全です

<p(?:[^<]*|<(?!p\b))*some content.*<\/html>

于 2012-06-28T18:39:48.137 に答える