Итак, в этой строке:
p_videoid=119110,p_videoepnumber= 0,p_videoairdate=NOT NULL,videoseason=null
Вы хотите поймать p_videoepnumber= 0,
.
Первая идея, которая приходит в голову, - попытка сопоставить p_videoepnumber= .*,
, но она фактически захватит p_videoepnumber= 0,p_videoairdate=NOT NULL,
.
Поскольку вы хотите остановиться на первой запятой, вы фактически будете использовать неохотно сопоставитель.На самом деле вы будете соответствовать p_videoepnumber= .*?,
(обратите внимание на дополнительные ?
).
С этого момента, вот код комментария:
String req = "p_videoid=119110,p_videoepnumber= 0,p_videoairdate=NOT NULL,videoseason=null";
// Add parenthesis to indicate the group to capture
String regex = "(p_videoepnumber= .*?,)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(req);
// find() finds the next subsequence of the input sequence that matches the pattern.
if (matcher.find()) {
// Displays the number of found groups : 1
System.out.println(matcher.groupCount());
// Displays the found group : p_videoepnumber= 0,
System.out.println(matcher.group(1));
// Replace " " with "" in the first group and display the result :
// p_videoid=119110,p_videoepnumber=0,p_videoairdate=NOT NULL,videoseason=null
System.out.println(matcher.replaceFirst(matcher.group(1).replaceAll(" ", "")));
} else {
System.out.println("No match");
}