我想要形成正則表達式來驗證字符串模式「part1 atmost-2-words part2」。 part1和part2是固定的字符串,在它之間可以包含任何字母但最多3個空格。要測試的Java正則表達式包含任何字母,但字符串之間只有3個空格
實施例:第1部分=這是,第2部分=錯誤
這是間歇系統錯誤 - 有效
這是一種間歇式的系統錯誤 - 無效
這是錯誤 - 有效
我必須單獨使用正則表達式來完成此操作。這是否可以使用正則表達式來完成?
我想要形成正則表達式來驗證字符串模式「part1 atmost-2-words part2」。 part1和part2是固定的字符串,在它之間可以包含任何字母但最多3個空格。要測試的Java正則表達式包含任何字母,但字符串之間只有3個空格
實施例:第1部分=這是,第2部分=錯誤
這是間歇系統錯誤 - 有效
這是一種間歇式的系統錯誤 - 無效
這是錯誤 - 有效
我必須單獨使用正則表達式來完成此操作。這是否可以使用正則表達式來完成?
由你的聲明去,下面的正則表達式會做的工作
This is(\w+\s*\w*)? error
由於This is
和error
固定在兩者之間atmost 2種模式。這應該很好。
試圖與regex101和工作正常,檢查出來https://regex101.com/r/mQ0uEM/1
謝謝你的工作。我稍微修改了它,如下所示,以匹配我所有的情況(。*?這是(\\ s ?? \ w *){0,4}錯誤){1}?。*? – sanjeev
代碼:
static String P1 = "This is";
static String P2 = "error";
static Pattern p = Pattern.compile(P1 + "\\W+(\\w+\\W+){0,2}" + P2);
static void test(String sentence) {
final Matcher m = p.matcher(sentence);
if(m.matches()) {
System.out.printf("%s - Valid\n", sentence);
}
else {
System.out.printf("%s - Invalid\n", sentence);
}
}
public static void main(String[] args) {
test("This is intermittent system error");
test("This is a intermittent system error");
test("This is error");
}
輸出:
This is intermittent system error - Valid
This is a intermittent system error - Invalid
This is error - Valid
說明:
是的,但你在哪裏卡住了?請分享您嘗試過的模式,並解釋不起作用的模式。 –
根據帖子的內容 - 你是不是指四個空格(至少要使字符串有效或無效..)?你可能想使用類似於這個正則表達式:'^ [\ w] +(\ s [\ w] +){0,4} $'它會驗證任何字符串中最多可以存在四個空格 - 應該驗證你的要求.. – vegaasen
我想形成一個像「這是[\\ w * \\ s {0,3}]錯誤」的模式。這是傳遞給現有的實用程序,驗證給定模式的字符串,並根據結果採取行動 – sanjeev