C# 如何使用正则表达式查找单词的精确匹配,但忽略带介词的相同文本?C

C# 如何使用正则表达式查找单词的精确匹配,但忽略带介词的相同文本?C,c#,regex,C#,Regex,嗨,我一直在使用DXF文件,正则表达式遇到了一些问题。 我有一些这样的文字 BODY 123 abc GR-BODY attrib AcdbLine tmp[0] = BODY tmp[1] = 123\nabc\nGR-LINE\nattrib\nAcdbLine tmp[0] = BODY tmp[1] = 123\nabc\nGR- tmp[2] = BODY\nattrib\nAcdbLine 我已经写了一些正则表达式,应该可以工作了,但是很明显

嗨,我一直在使用DXF文件,正则表达式遇到了一些问题。 我有一些这样的文字

   BODY
   123
   abc
   GR-BODY
   attrib
   AcdbLine
tmp[0] = BODY
tmp[1] = 123\nabc\nGR-LINE\nattrib\nAcdbLine
tmp[0] = BODY
tmp[1] = 123\nabc\nGR-
tmp[2] = BODY\nattrib\nAcdbLine
我已经写了一些正则表达式,应该可以工作了,但是很明显,我仍然需要一些帮助来实现这个正则表达式

这是我的密码

string[] tmp = Regex.Split(originalString, @"(3DFACE|3DSOLID|ACAD_PROXY_ENTITIY|ARC|ATTDEF|ATTRIB|BODY|CIRCLE|DIMENSION|ELLIPSE|HATCH|HELIX|IMAGE|INSERT|LEADER|LIGHT|LWPOLYLINE|MLINE|MLEADERSTYLE|MLEADER|MTEXT|OLEFRAME|OLE2FRAME|POINT|POLYLINE|RAY|REGION|SEQEND|SHAPE|SOLID|SPLINE|SUN|SURFACE|TABLE|TEXT|TOLERANCE|TRACE|UNDERLAY|VERTEX|VIEWPORT|WIPEOUT|XLINE|LINE)", RegexOptions.None);
我只想捕捉正文,但GR-BODY仍然包含在内,如何排除GR-BODY? 谢谢

编辑1 很抱歉,我之前找错了代码

嗯,我想这样输出

   BODY
   123
   abc
   GR-BODY
   attrib
   AcdbLine
tmp[0] = BODY
tmp[1] = 123\nabc\nGR-LINE\nattrib\nAcdbLine
tmp[0] = BODY
tmp[1] = 123\nabc\nGR-
tmp[2] = BODY\nattrib\nAcdbLine
因为我的代码只能这样

   BODY
   123
   abc
   GR-BODY
   attrib
   AcdbLine
tmp[0] = BODY
tmp[1] = 123\nabc\nGR-LINE\nattrib\nAcdbLine
tmp[0] = BODY
tmp[1] = 123\nabc\nGR-
tmp[2] = BODY\nattrib\nAcdbLine

这个regex语句应该有效。尝试使用Regex.Matches返回MatchCollection


如果你的单词总是从一行的开头到结尾,那么告诉这个句型:

string[] tmp = Regex.Split(originalString, @"^(3DFACE|3DSOLID|ACAD_PROXY_ENTITIY|ARC|ATTDEF|ATTRIB|BODY|CIRCLE|DIMENSION|ELLIPSE|HATCH|HELIX|IMAGE|INSERT|LEADER|LIGHT|LWPOLYLINE|MLINE|MLEADERSTYLE|MLEADER|MTEXT|OLEFRAME|OLE2FRAME|POINT|POLYLINE|RAY|REGION|SEQEND|SHAPE|SOLID|SPLINE|SUN|SURFACE|TABLE|TEXT|TOLERANCE|TRACE|UNDERLAY|VERTEX|VIEWPORT|WIPEOUT|XLINE|LINE)$", RegexOptions.Multiline);
这将为您提供预期的输出

^匹配使用多行选项时行的开头


$匹配使用多行选项时的行尾

hmm是否有方法编辑我的代码以拆分它?因为我需要在输出中包含正则词,我不确定我是否理解,如果原始字符串中有GR-LINE,您希望将匹配项输出到GR-LINE,还是希望它仅从GR-LINE输出行?啊,misha,很抱歉,请再次查找我的问题,这是我的错误,问题在于车身,您希望实现什么?结果应该是什么样子?我已经编辑过了,谢谢你的建议。你是说你想把它作为你的输出吗?tmp[1]=123\nabc\nGR BODY\nattrib\nAcdbLine