0

私はこれが少なくとも千回尋ねられたことを知っていますが、ここでこの文字列の名前に一致する適切な正規表現を見つけることができません:

<td><div id="topbarUserName">Donald</div></td>

「ドナルド」という名前を取得したいのですが、最も近い正規表現は >[a-zA-Z0-9]+ ですが、結果は >Donald です。

私は PureBasic (構文は Basic の構文に似ています) でコーディングしており、正規表現には PCRE ライブラリを使用しています。

誰でも助けることができますか?

4

4 に答える 4

3

Josh のパターンは、一致全体ではなく、番号付きのグループのみを使用する場合に機能します。マッチ全体を使用する必要がある場合は、次のようなものを使用します(?<=>)(\w+?)(?=<)

いずれにせよ、正規表現は HTML の解析に適していないことが広く知られています。

説明: (?<=)現在の項目の前に何かが表示されているかどうかを確認するために使用されます。 \w+?は、任意の「単語」文字に 1 回以上一致しますが、パターンの残りの部分が何かに一致するたびに停止?します。 (?=)現在のアイテムの後に何かが表示されるかどうかを確認するために使用されます。

于 2012-06-19T21:48:20.997 に答える
1

>([a-zA-Z]+)トリックを行う必要があります。グループ化を正しく行うことを忘れないでください。

于 2012-06-19T21:44:34.273 に答える
1

これを試して

文字/数字であるものはすべてキャプチャする必要があります

>([\w]+)<

また、プロジェクトの制限が何であるかは正確にはわかりませんが、このようなことを行う方がはるかに簡単です。

$('#topbarUserName').text();

正規表現を使用する代わりにjQueryで。

于 2012-06-19T21:28:06.387 に答える