我需要由線被分開線執行以下操作:正則表達式分開單詞
實施例:
word "multiple set" another word L&D "another set"
輸出:
word
multiple set
another
word
L&D
another set
我目前使用
:
(?<match>\w+)|\""(?<match>[\w\s]*)
但它不適用於安培rsand(&)
謝謝!
我需要由線被分開線執行以下操作:正則表達式分開單詞
實施例:
word "multiple set" another word L&D "another set"
輸出:
word
multiple set
another
word
L&D
another set
我目前使用
:
(?<match>\w+)|\""(?<match>[\w\s]*)
但它不適用於安培rsand(&)
謝謝!
嘗試:"(.*?)"|(\S+)
這將懶洋洋地在引號OR
任何一套非whitepace字符之間的匹配任何字符。
示例here。根據不同的語言,您可能需要避開雙引號(\"(.*?)\"
)。
像@abiessu提到的那樣,您可以使用更具體的([^"]*)
選擇器替換懶惰選擇器(.*?)
。延遲選擇器將選擇所有內容,直到選擇器之後的第一個字符(以下"
),其中更具體的([^"]*)
將選擇除"
之外的所有內容。不確定延遲選擇器與字符類型之間是否存在性能差異,但是它取決於您。
如果您傳遞給Regex.Split
的模式包含捕獲組,則捕獲的文本將包含在結果集中。例如:
var input = "word \"multiple set\" another word L&D \"another set\"";
var output = Regex.Split(input, "\"([^\"]*)\"|\\s");
產生一個結果集是這樣的:
"word"
""
"multiple set"
""
"another"
"word"
"L&D"
""
"another set"
""
現在,如果你只是刪除空元素(一個小的LINQ可以在這裏很有用):
var output = Regex.Split(input, "\"([^\"]*)\"|\\s").Where(x => x.Length > 0);
產生如下結果集:
"word"
"multiple set"
"another"
"word"
"L&D"
"another set"
using C#a那麼現在 –
......那麼你爲什麼不使用'\ S'而不是單詞字符呢?我不知道爲什麼你會期望「字符」匹配&符號... – Doorknob
你試過逃避&符號嗎? –