私はログファイルを読み込み、ファイルに含まれる特定のデータを抽出しています。私は、ログファイルの各行の時間を抽出することができます。各IDの反復サブストリングに基づいてID文字列を抽出するJava Regex
今度はid "ieatrcxb4498-1"
を抽出したいと思います。 idのすべてはサブ文字列ieatrcxb
で始まり、それを基にして完全な文字列を返すようにしました。
私は他の投稿から多くの異なる提案を試みました。しかし、私は次のパターンで、成功していない:私もi
から始まり、1
に仕上げ文字列に、ベースの完全なIDを抽出しようとしてい
(?i)\\b("ieatrcxb"(?:.+?)?)\\b
(?i)\\b\\w*"ieatrcxb"\\w*\\b"
^.*ieatrcxb.*$
。彼らがすべてそうするように。ログファイルの
ライン
150: 2017-06-14 18:02:21 INFO monitorinfo : Info: Lock VCS on node "ieatrcxb4498-1"
コード
Scanner s = new Scanner(new FileReader(new File("lock-unlock.txt")));
//Record currentRecord = null;
ArrayList<Record> list = new ArrayList<>();
while (s.hasNextLine()) {
String line = s.nextLine();
Record newRec = new Record();
// newRec.time =
newRec.time = regexChecker("([0-1]?\\d|2[0-3]):([0-5]?\\d):([0-5]?\\d)", line);
newRec.ID = regexChecker("^.*ieatrcxb.*$", line);
list.add(newRec);
}
public static String regexChecker(String regEx, String str2Check) {
Pattern checkRegex = Pattern.compile(regEx);
Matcher regexMatcher = checkRegex.matcher(str2Check);
String regMat = "";
while(regexMatcher.find()){
if(regexMatcher.group().length() !=0)
regMat = regexMatcher.group();
}
//System.out.println("Inside the "+ regexMatcher.group().trim());
}
return regMat;
}
私は私のためにこれを行います単純なパターンを必要としています。
"ログファイルとファイルに含まれている特定のデータを抽出する" - どのような種類のデータ、どのようなログファイルですか?例を投稿してください。 – user3734782
@ user3734782150:2017-06-14 18:02:21 INFO monitorinfo:情報:ノード "ieatrcxb4498-1"でVCSをロックします。これはログファイルのデータのサンプルです。 –
だから、IDを含む行全体を抽出したいですか? – user3734782