不能工作這一個,這相匹配的單星:正則表達式匹配反斜線星級
// Escaped multiply
Text = Text.replace(new RegExp("\\*", "g"), '[MULTIPLY]');
但我需要它來搭配\*
,我已經試過:
\\*
\\\\*
\\\\\*
能」噸工作了,謝謝你的幫助!
不能工作這一個,這相匹配的單星:正則表達式匹配反斜線星級
// Escaped multiply
Text = Text.replace(new RegExp("\\*", "g"), '[MULTIPLY]');
但我需要它來搭配\*
,我已經試過:
\\*
\\\\*
\\\\\*
能」噸工作了,謝謝你的幫助!
您當時已經接近,\\\\\\*
本來可以做到的。
更好地利用逐字字符串,這使得它更容易:
RegExp(@"\\\*", "g")
\\
反斜槓(\\\\
在一個正常的字符串)匹配,\*
星號(\\*
在一個正常的字符串)相匹配。
你的語法是完全錯誤的。它看起來更像Javascript而不是C#。
這工作得很好:
string Text = "asdf*sadf";
Text = Regex.Replace(Text, "\\*", "[MULTIPLY]");
Console.WriteLine(Text);
輸出:
asdf[MULTIPLY]sadf
要匹配\*
你會使用該模式"\\\\\\*"
。
請記住,有兩個「級別」的逃跑。
首先,您正在爲C#編譯器轉義您的字符串,並且您還正在爲正則表達式引擎轉義字符串。
如果你想從字面上匹配"\*"
,那麼你需要爲正則表達式引擎同時轉義這兩個字符,否則它們意味着不同的東西。我們用反斜槓逃避這些,所以你會有"\\\*"
。
然後,我們必須轉義反斜槓才能將它們寫成文字字符串。這意味着用兩個反斜槓替換每個反斜槓:"\\\\\\*"
。
除了最後一部分,我們可以使用「逐字字符串」,其中不應用任何轉義。在這種情況下,您只需要第一次轉義的結果:@"\\\*"
。
@Tim:匹配零個或多個反斜槓? – porges
對不起,我混了起來。你是對的。 –