使用Regex.split时如何忽略更长的单词?

时间:2012-07-10 08:16:39

标签: c# regex text

string[] tmp = Regex.Split(originalString, @"\b(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)\b", RegexOptions.None);

我有这个文字

BODY
bodyattrib
mybody
GR-BODY
attrib
123

我希望输出像这样

tmp[0] = "BODY"
tmp[1] = "bodyattrib\mybody\nGR-BODY\nattrib\n123"
到目前为止没有好处 输出始终是用GR-BODY

分割的3个数组

1 个答案:

答案 0 :(得分:0)

使用^特殊字符:

string[] tmp = Regex.Split(originalString, @"\b(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)\b", RegexOptions.None);

^表示beginning of string or line

如果你喜欢将它应用于所有单词,请使用^表示你喜欢的单词:

\b(^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)\b

其他有用的特殊字符$表示end of string or line。你可以将这些单词括在一起,以确保这些单词出现在一行中。

请注意^$取决于Multiline选项。