他のプラットフォームでは一致していない、私は成功しません、別の正規表現フラグを試してみました。私はこのstringで試合を見つけようとしている正規表現パターンは、Androidに加工へが、私はどこにでも解決策を見てきた
private static String LAST_LOG = "/.*?Last login:.*?td.*?td.*?([A-Za-z]+).*?;([0-9]+).*?;([0-9]+).*?;([0-9]+):([0-9]+):([0-9]+).*?([A-Z]+)/";
:
は、私は、次の正規表現パターンを持っています。
あなたが見ることができるように、それが試合を見つけて、7グループ(月、日、年、時、分、秒、タイムゾーン)内のデータをキャプチャしています。
問題は、私は、私は、文字列をテストしてみた、それは私が探している部分を含んでいない、まったく試合が届かないということですので、私は動作しないと、このため、他の理由を見つけることができませんAndroidで
m = getMatcher(content,LAST_LOG);
if(m.find()) {
Log.e("Month",m.group(1));
Log.e("Day",m.group(2));
Log.e("Year",m.group(3));
Log.e("Hour",m.group(4));
Log.e("Minute",m.group(5));
Log.e("Second",m.group(6));
Log.e("Timezone",m.group(7));
}
private static Matcher getMatcher(String str, String regex){
Pattern pattern = Pattern.compile(regex);
return pattern.matcher(str);
}
そして、これは私のトラブルを引き起こしている唯一の正規表現ではありませんが、私は現在作業している他の人を持っていますが、単純な修正は、彼らも他のプラットフォーム(およびオンライン正規表現テスター)、彼らが正常に動作に考え、失敗します。
は、私はPythonスクリプトで同じ正規表現を持っており、それは何の問題もなく働いています:regex_last = r'.*?Last login:.*?td.*?td.*?([A-Za-z]+).*?;([0-9]+).*?;([0-9]+).*?;([0-9]+):([0-9]+):([0-9]+).*?([A-Z]+)'
m = re.search(regex_last,content.decode())
if m:
print(m.group(1))
print(m.group(2))
print(m.group(3))
print(m.group(4))
print(m.group(5))
print(m.group(6))
print(m.group(7))
else:
print('No match')
出力:
Apr
07
2016
17
33
52
CEST
私は以来、HTMLパーサに切り替えるには、この近くだけど、私はすでにPythonとAndroidの両方で正規表現を使っていましたが、正規表現を使うとプラットフォーム間の切り替えが簡単になると思ったので、私はそれらを使うことにしました。
パターンの開始時と終了時に '' /、正規表現の区切り文字を削除します。 ICU正規表現はそれらを必要とせず、リテラルとして扱われます。最後のログイン:。*?td。*?td。*?([A-Za-z] +)。* ?;([0-9] +)。*? ; [(0-9)+)。*?((0-9)+):([0-9] +)。 '正規表現文字列として –
が希望XPathクエリとして、一定になると、他のすべての言語間で変化するであろう、あなたの最後の文がWiktorStribiż[email protected]何の意味 –
を行うものではありません:おかげで、それは私がやったことだ、私は同じ示唆ローレルの答えを受け入れました! – Galarzaa90