2010-11-24 3 views
1

私は次のhtml行を持っています正規表現を使用して文字列から番号を取得する

<b>String :</b></b></td><td class="title">14</td> 

私は数を取得するためにそれを解析しようとしています。見た目は単純ですが、 "s/^.*\(:digit:\).*$/\1/"は行全体を表示します。 私も "s/^.*\(\d+\).*$/\1/"を試しましたが、同じ結果を返します。

"s/^.*String.*>\(.*\)<.*$/\1/"コマンドを実行すると必要なものが返されますが、 "s/^.*String.*>\(\d+\)<.*$/\1/"は再び行全体を返します。

グループ内のインクリメント専用数字を指定する文字列から数字をここに入力できると思いますか?

編集:私はJava言語のために必要です。ここでの例は、sedコマンドを使ってテストする正規表現を取得するための作業です。

ありがとう。

+0

それはむしろ、POSIX BRE/GNU BREを使用する言語ですbetwenあるあなたのテキストから数字だけ(以降 '()'エスケープされます)。 – Gumbo

+0

これらの括弧はエスケープされていますか?それはキャプチャが正常に動作するのを妨げるでしょう... –

+0

言語please ... – Keng

答えて

0

JavaScriptでは、あなたがこれを行うことができます:

var num = parseInt(someString.replace(/\D/g , '')); 
0

をあなたが使用しているどのような言語については説明しませんが、答えは簡単です。

式をキャプチャすると(括弧)、複数の結果があります。

最初の#0は常に完全一致です。数字の前後に.*があるため、余分なHTMLが結果に含まれます。

ただし、2回目の試合では、#1の場合は番号のみが必要です。この結果を取得する方法は言語によって異なりますが、質問を更新すると、その点でお手伝いできる場合があります。

編集:

public static String extractNumber(String input) { 
    Pattern p = Pattern.compile("s/(\\d+)/"); 

    Matcher m = p.matcher(input); 

    if(m.find()) { 
     String num = m.group(1); 
     return Integer.parseInt(num); 
    } 

    return null; 
} 

このことは入力テキストで見つかった最初の番号を抽出します。また、グループの使用方法も示しています。

現時点で適切なJava環境が設定されていないため、テストしていませんが、大丈夫です。何か問題がある場合は教えてください。

+0

マイク、私はJavaを使用しています – yart

+0

@yart:あなたのお手伝いをする方法で投稿を更新しました。 –

0

私はちょっと変わった正規表現の実装があると思います。環境は何ですか?

s/^[^\d]*\(\d+\)<[^\d]**$/\1/ 

ただし、値する必要があります。設定されたパターンが必要かどうかを確認するか、文字クラス(\ d)を最初に許可するかどうかを確認してください。文字クラス0-9がそれを行うべきでなければ。

0

正規表現(?:<(?:[^>])+>)(\d+)(?:(?:<\/[^>]+)+>)キャプチャhtmlタグ

+0

どのような意味?:ここですか? – yart

+0

@yart(?:....)は、キャプチャなしのグループを意味します。 – EmFi

関連する問題