2017-09-26 8 views
1

私は多くのテキストファイルを持っています。各テキストファイルには、以下のような関心のあるセクションがあります。文字列内のstr_matchの使用

<tr> 
     <td ><b>发起时间</b></td> 
     <td colspan="2" style="text-align: left">2015-04-08</td> 
     <td style="width: 25%;"><b>回报机制</b></td> 
     <td colspan="2" style="text-align: left">使用者付费</td> 
    </tr> 

ファイルによって異なる情報は、日付のみです。この場合、日付は2015-04-08です。

日付を抽出したいです。私はRユーザーですが、通常str_matchstringrパッケージから使用します。私は文字列の先頭に次の文字列を指定します:

 <td ><b>发起时间</b></td> 
     <td colspan="2" style="text-align: left"> 

しかし、この文字列が2行にまたがっているとすれば、何をするべきかわかりません。私に何ができる?それはに正規表現を使用することをお勧めしません

+1

は、私はあなたの日付の形式が変更された場合、正規表現をしようと示唆している参照してください。初心者のためにこのリンクをブラウズすることができます:https://www.regular-expressions.info/rlanguage.html –

+0

HTMLを解析する場合は、 'rvest'を使用してテーブルタグ間のテキストを抽出することをお勧めします。その後、追加のHTMLについて心配する必要はありません。 –

答えて

1

は正規表現

でそれを行うことを考えると、(それはまた、中国語の文字が含まれていますが、それは別の問題だ)

しかし、私はそうするかどうかはわかりません可能性のある不明瞭なエッジケースのためにHTMLを解析しますが、あなたがHTMLを何らかの制御をしていると思われるので、regex policeが泣いてしまう多くのケースを避けることができます。正規表現

提案するソリューションあなたはキャリッジリターンと改行は次のようになり\s+を使用することができます。単に右新しいウィンドウで

をイメージし、選択ビューをクリックして、サンプルテキストに基づいて、より良い画像を表示するには

<td ><b>发起时间<\/b><\/td>\s+<td colspan="2" style="text-align: left">([0-9]{4}-[0-9]{2}-[0-9]{2})<\/td>

enter image description here **:結果の正規表現は、このようになります。 。最初のキャプチャグループには、日付に似た文字列が含まれます。正規表現は日付を実際に検証しているわけではなく、フォーマットにマッチするだけであることに注意してください。

\s+正規表現は、次の操作を行いますの説明:

\s matches any white space character 
+ allows the preceeding regex to match 1 or more times 

我々は、キャリッジ・リターン、改行、その後、すべての、タブまたは複数のスペースと思われるものがあるでしょう知っているので、それらのうちの1つは一致します。ただし、これらの空白文字がソースファイルでオプションである場合は、\s*を使用できます。この場合、*は0個以上の空白文字と一致します。

このlive example

関連する問題