2012-01-28 55 views
6

在我的公司,我們最近注意到有一位開發人員沒有使用語言文件,而是直接在代碼中放置文本。在我的代碼中查找字符串文字

我的想法是在兩行之間至少有一個或多個空格的引號內搜索單詞。但我得到還挺堅持

("|')(\w|\s{1,})*('|") 

這確實匹配的文本,但不要求有ATLEAST 1字和ATLEAST 1個空格(所以大約引號之間的任何比賽)。誰能幫我嗎?

我想用這種語言是PHP包含一個「字」和一個空格(或我可以做一個記事本+搜索)

+0

什麼編程語言? – 2012-01-28 15:20:03

+0

在問題中增加了語言 – Rob 2012-01-28 15:29:28

+0

感興趣的引語裏面有什麼?除了文字和空格之外的任何內容他們看起來像「foo bar baz」嗎?逃生是否允許?有問題的開發人員使用的代碼是哪種語言(您正在搜索的代碼)? – Qtax 2012-01-28 16:13:59

回答

2

如果你想匹配單或雙引號中的字符串(不逃逸)你可以使用:

"(?=[^"\n]*\w)(?=[^"\n]*\s)[^"\n]+"|'(?=[^'\n]*\w)(?=[^'\n]*\s)[^'\n]+' 

在PHP它會是什麼樣子:

preg_match_all("/\"(?=[^\"\n]*\\w)(?=[^\"\n]*\\s)[^\"\n]+\"|'(?=[^'\n]*\\w)(?=[^'\n]*\\s)[^'\n]+'/", $string, $matches); 
+0

謝謝,作品像一個魅力!不好,我不能全部閱讀,但需要花一些時間來研究正則表達式。現在唯一的問題是它也需要文字之間的所有詞。搜索EOL可以解決這個問題嗎? – Rob 2012-01-28 16:26:21

+0

+1,希望字符串不能包含轉義。如果可能的話,一個正則表達式會變得相當混亂。我收回了我的解決方案,因爲我發現越來越多的邊緣案例會失敗...... – 2012-01-28 16:36:02

+0

@Rob,「它也需要文字之間的所有詞」,你是什麼意思?你能舉一些例子嗎?如果字符串沒有跨越多行,您可能還想將所有的[^「]和[['']'改爲'[^」\ n]'和'[^'\ n]'。 @Tim,謝謝。你說得對,如果有逃跑,最好用另一種方式寫,更像你的。 – Qtax 2012-01-28 19:27:54