正則表達式與He/She
正則表達式用他來代替他或她/她
更換He
或She
我有以下情況:前行 線
- 開始或標點符號後
我試過這個
str.replace(/((\s|^|/[^!-~]/)He($|\s|/[^!-~]/)|(\s|^|/[^!-~]/)She($|\s|/[^!-~]/))/g, "He/She")
這是拋出異常...我正在使用JavaScript。
正則表達式與He/She
正則表達式用他來代替他或她/她
更換He
或She
我有以下情況:前行 線
我試過這個
str.replace(/((\s|^|/[^!-~]/)He($|\s|/[^!-~]/)|(\s|^|/[^!-~]/)She($|\s|/[^!-~]/))/g, "He/She")
這是拋出異常...我正在使用JavaScript。
,我們在您的正則表達式的一些錯誤:您已在多個轉義斜槓(/
),這實際上是沒有必要的。我簡化和改進你的正則表達式了一下,就可以直接使用它像這樣:
(\s|^|[^!\-~])(He|She)($|\s|[^!\-~])
,取而代之的是:
$1He/She$3
在JavaScript中,這將是這樣的:
var text = "He went to school";
var result = text.replace(/(\s|^|[^!\-~])(He|She)($|\s|[^!\-~])/g, '$1He/She$3');
console.log(result);
這將匹配任何ÿ我們的角色(白色空間,!
等)之前和之後,你不會失去它,因爲它再次被添加到結果。否則,您需要積極的lookaheads/lookbeheads,這在JavaScript中不受支持(lookbehinds)。
我可能會添加一些這些字符(例如?
,.
,這都需要進行轉義)的。如果您還想匹配he
和she
,則必須使用不區分大小寫的標誌i
。請注意,替換he
然後是He/She
與大寫。
編輯有一個在正則表達式中的錯誤:[^!-~]
匹配除字符一切從!
直到~
(因爲在之間的破折號)。您需要將其轉義爲[^!\-~]
。
您也可以只使用單詞邊界,就像這樣:
var text = "Sheldon went to school with her, but he did not like it.";
var result = text.replace(/\b(He|She)\b/g, 'He/She').replace(/\b(he|she)\b/g, 'he/she');
console.log(result);
Javascript編譯器例外:非法字符(null.null.script;第2行)in: var str =「他是好人。她是個好人」。 ($ | - |)|()|($ | - | s | [^! - 〜]),「$ 1He/She $ 2」); –
@ T.Bedia你不能只寫一個沒有引號或斜線的正則表達式..我已經添加了一個例子...... –
「.She」怎麼樣? –
我不知道爲什麼你說得那麼複雜。好像你不關心正確的大小寫,所以:
var str = "He likes to play baseball while she likes riding horses. She thinks baseball is dumb. She doesn't know if he would like to ride horses also... would he?";
console.log(str.replace(/\bs?he\b/ig, 'He/She'));
(我爲魯鈍一句道歉。)
\b
被用作單詞分隔符。
s?he
匹配「她」或「他」。
ig
用於忽略大小寫並全局搜索。
我很在乎這個案子.. –
你可以添加正在拋出的異常嗎? –