2011-12-06 17 views
0

79 0009 017009 0479パーセント0009 0479 0009 0469パーセント0009 0009 0469 0459パーセント0009 0459'009 0009 0459パーセント0009 0449 0009!!!!! 0449%0009!0449 0009!0439%0009!0439 0009!0429%0009!0429'009 0009!0429%0009!0419 0009!0419%0009!0409 000'009!0399 0009!0389%0009!0389 ' 009 0009!037​​9パーセント0009!0369 0009!0349パーセント0009!0349 0009!0339パーセント0009!0339 0009!0339パーセント0009!0329'009 0009!0329パーセント0009!0329 0009!032でテキストファイルからのデータの抽出 - !!!!!繰り返される値

このデータは、私は47,46,45,44などの番号を抽出するはずです。私は残りを避けることになっている。数値は常にこのフローに従います - 9!0 no 9% 例:9!0 42 9% これを解決するためにどの言語を使用してください。 特殊文字を配置して次の2つまたは3つの要素をコピーできる機能はありますか? 例:9!0 42 9%および '009 をご覧ください!そこから42をコピーし、 'それが別の値(009)を参照しているのを見てください。これは2つの異なる正規表現のようなものです。

答えて

0

任意の言語を使用することも、sedawkgrepなどのUNIXコマンドラインユーティリティを使用することもできます。正規表現はこのようなものでなければなりません.9桁の0に続けて0桁の数字を続けます。この正規表現を使用してください:9!0(\d+)0%(または数字がすべて2桁の場合は、9!0(\d{2})0%)。

0

これはperlのです:

@result = $subject =~ m/(?<=9!0)\d+(?=9%)/g; 

それはあなたのすべての数字の配列を与えます。あなたは言語を提供していないので、これがあなたに適しているかどうかわかりません。

Pattern regex = Pattern.compile("(?<=9!0)\\d+(?=9%)"); 
Matcher regexMatcher = regex.matcher(subjectString); 
while (regexMatcher.find()) { 
    // matched text: regexMatcher.group() 
    // match start: regexMatcher.start() 
    // match end: regexMatcher.end() 
} 
+0

Javaは非常に好きです。 –

+0

@SiddharthanAsokanアップデートを確認してください。 – FailedDev

0

他の回答は大丈夫です、私の正規表現のソリューションは単純である「9!。(\ D \ d)の」

そして、ここで簡単に他の.NETに相関させることができるPowerShellの完全なソリューションは、ですlangs

$t="79 0009!017009!0479%0009!0479 0009!0469%0009!0469 0009!0459%0009!0459'009 0009!0459%0009!0449 0009!0449%0009!0449 0009!0439%0009!0439 0009!0429%0009!0429'009 0009!0429%0009!0419 0009!0419%0009!0409 000'009!0399 0009!0389%0009!0389'009 0009!0379%0009!0369 0009!0349%0009!0349 0009!0339%0009!0339 0009!0339%0009!0329'009 0009!0329%0009!0329 0009!032" 
$p="9!.(\d\d)" 
$ms=[regex]::match($t,$p) 
while ($ms.Success) {write-host $ms.groups[1].value;$ms=$ms.NextMatch()} 
関連する問題