2016-11-09 7 views
1

私は、1,000,000を超える巨大な文字列に変換されたPDFファイルを持っています。文字列には、日付がdd/mm/yyyyの形式であります。私は文字列を小さなものに分割したい。私は以下を試しました:JavaScriptを使用して巨大な文字列を日付で分割する方法は?

var sectioned = hugeString.split(/^(0?[1-9]|[12][0-9]|3[01])[\/](0?[1-9]|1[012])[\/\-]\d{4}$/g); 

しかし、それは動作していません。私もhugeString.match()を試しましたが、良い結果はありませんでした。

これを文字列関数でも実行することは可能ですか、別のアプローチを考えるべきですか?

文字列スニペット:

....Section: 2 Interpretation E.R. 2 of 2012 02/08/2012 .....

+0

その正規表現から '^'と '$'アンカーを削除します。文字列がその全体の日付であることを望むときに必要ですが、文字列がそれを囲む他のテキストを持つことが許されていないときは必要です。 – trincot

+1

'.split(/?:0?[1-9] | [12] [0-9] | 3 [01])[\/- ](?: 0?[1-9] | 1 [ 012])[\/- ] \ d {4} /) ' - アンカー、' g'修飾子を削除し、非捕捉グループを使用します。分割チャンクの日付を分割して分割する必要がある場合は、 '(?= PATTERN HERE)'をラップします。 –

答えて

1

あなたは、g修飾子をアンカーを削除する(それは冗長である)との結果にだけでなく出力された日付を避けるために非キャプチャグループを使用することができます。スプリットチャンクで日付を保持する必要がある場合は、(?=PATTERN HERE)をラップします。ただし、この方法を使用する場合は、最初にパターンにオプションの0がないことを確認するか、結果に冗長要素が含まれる可能性があります。

var s = "....Section: 2 Interpretation E.R. 2 of 2012  02/08/2012 ..... "; 
 
var res = s.split(/(?:0?[1-9]|[12][0-9]|3[01])[\/-](?:0?[1-9]|1[012])[\‌/-]\d{4}/); 
 
console.log(res); 
 
res = s.split(/(?=(?:0[1-9]|[12][0-9]|3[01])[\/-](?:0[1-9]|1[012])[\‌/-]\d{4})/); 
 
console.log(res);

他の区切り文字クラスは、両方の文字が含まれているときにもパターンで-なし[\/]サブパターンを持っています。どちらの場合も[\/-]を使用することをお勧めします。

関連する問題