我需要一個正則表達式來驗證多個必須存在的字符串的文本。說我有如何使用正則表達式匹配文本中的多個字符串?
- 玫瑰色使孩子們去野外
- 瑪利亞野生男孩是很瘋狂的文字確實
- 亨利是一個野小子
- 仙跳動着3個男孩昨晚
我想匹配既有'男孩'又有'狂野'(以任意順序)的句子。正確的匹配是1和2,但不是3和4.
任何人?
我需要一個正則表達式來驗證多個必須存在的字符串的文本。說我有如何使用正則表達式匹配文本中的多個字符串?
- 玫瑰色使孩子們去野外
- 瑪利亞野生男孩是很瘋狂的文字確實
- 亨利是一個野小子
- 仙跳動着3個男孩昨晚
我想匹配既有'男孩'又有'狂野'(以任意順序)的句子。正確的匹配是1和2,但不是3和4.
任何人?
.*(?=\bboys\b).*(?=\bwild\b)|.*(?=\bwild\b).*(?=\bboys\b)
(^.*boys.*wild.* $|^.*wild.*boys.*$)
通過適當的轉義取決於你使用它在那裏,當然。
http://www.regular-expressions.info/reference.html
/.*?wild.*?boys.*|.*?boys.*?wild.*/
你想使用.*?
因爲剛.*
單是貪婪,會消耗掉整個字符串。在一場貪婪的比賽中,你將沒有任何人物可以與「狂野」和「男孩」相匹配,所以它總是會失敗。
這將找到包含其中任何一個的文本,而不是兩個。 – mcrumley
正則表達式在這裏矯枉過正。這工作得很好,是更具可讀性:
for (String str : new String[] { "Rosy made the boys go wild", "Marys wild boys are very crazy indeed",
"Henry is a wild boy", "Sally danced with 3 boys last night" }) {
if (str.contains("wild") && str.contains("boys")) {
System.out.println(str);
}
}
打印:
Rosy made the boys go wild
Marys wild boys are very crazy indeed
容易得多,如果你的國家,你會用什麼工具,正則表達式 –
基里爾給了以下的罰款建議,回答你的問題,但爲了清晰起見,我在ASP.NET/C#中使用RegEx類... – Alex