[英]Match regex pattern in a line of text without targeting the text within quotations
到目前为止,Stackoverflow对我的正则表达式问题的回答一直很慷慨,但是对于这个问题,我正在空白处做什么,但似乎无法在这里找到答案。
因此,我正在解析一个字符串,例如,下面是一行VB风格的代码,如下所示:
Call Function ( "Str ing 1 ", "String 2" , " String 3 ", 1000 ) As Integer
Dim x = "This string should not be affected "
我正在尝试解析文本,以消除所有的前导空格,尾随空格和多余的内部空格(当两个“单词/块”用两个或多个空格分隔开时, 或当字符与字符之间存在一个或多个空格时,括号)在C#中使用正则表达式。 解析以上内容后的结果应如下所示:
Call Function("Str ing 1 ", "String 2", " String 3 ", 1000) As Integer
Dim x = "This string should not be affected "
我遇到的问题是,我想解析除引号(即字符串)中包含的任何文本以外的所有行。 基本上,如果字符串中有多余的空格或其他内容,我想假设它是预期的并且继续前进而根本不更改字符串,但是如果行文本中的引号之外有多余的空格,我想解析并相应地进行调整。
到目前为止,我有下面的正则表达式可以完成我上面提到的所有解析,唯一的问题是,它将像行的任何其他部分一样影响字符串的内容:
var rx = new Regex(@"\A\s+|(?<=\s)\s+|(?<=.)\s+(?=\()|(?<=\()\s+(?=.)|(?<=.)\s+(?=\))|\s+\z")
.
.
.
lineOfText = rx.Replace(lineOfText, String.Empty);
任何人都知道我该如何解决这个问题,或者知道过去的回答我找不到的问题? 谢谢!
由于要逐行读取文件,因此可以使用以下修复程序:
("[^"]*(?:""[^"]*)*")|^\s+|(?<=\s)\s+|(?<=\w)\s+(?=\()|(?<=\()\s+(?=\w)|(?<=\w)\s+(?=\))|\s+$
用$1
替换匹配的文本,以恢复用("[^"]*(?:""[^"]*)*")
捕获的字符串文字。
观看演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.