我正在尝试编写一个找到C#式非转义字符串的正则表达式,例如
string x = @"hello
world";
我遇到的问题是如何编写一个正确处理字符串中双引号的规则,如本例所示
string x = @"before quote ""junk"" after quote";
这应该是一个简单的,对吧?
答案 0 :(得分:1)
试试这个:
@".*?(""|[^"])"([^"]|$)
第一个parantheses意味着'如果有一个'在完成报价之前,最好是其中两个',第二个parantheses意味着'在完成报价之后,可能以太没有报价,或者行结束”。
答案 1 :(得分:0)
如何使用正则表达式@\"([^\"]|\"\")*\"(?=[^\"])
由于贪婪的匹配,你的正则表达式引擎可能不需要最后的超前条款,尽管它更具体。
答案 2 :(得分:0)
如果我没记错的话,你必须使用\“” - 双引号将其哈希为C#,反斜杠将哈希值用于正则表达式。
答案 3 :(得分:0)
试试这个:
@"[^"]*?(""[^"]*?)*";
查找起始字符@“,结尾字符”; (如果需要,你可以把分号留出来),除了引号之外,它可以有任何字符,或者如果有引号,它们必须加倍。
答案 4 :(得分:0)
"^@(""|[^"])*$"
是你想要的正则表达式,首先找到一个at-sign和一个双引号,然后是一系列任何字符(双引号除外)或双引号,最后是双引号报价。
作为C#中的字符串文字,您必须将其写为string regex = "^@\"(\"\"|[^\"])*\"$";
或string regex = @"^@""(""""|[^""])*""$";
。选择你的毒药。
答案 5 :(得分:0)
@"(?:""|[^"])*"(?!")
是这项工作的正确正则表达式。它匹配@,一个引号,然后连续两个引号或任何非引号字符,重复这个到下一个引号(不加倍)。