正则表达式删除字符后跟n个字符

时间:2018-02-14 10:56:38

标签: c# regex

两年没编码后,我有点失去锻炼。 我在txt文件中有数千行。所有类似于这一个:

X0 Y0 S-0.30
X0 Y0 S-0.21
X0 Y0 S-0.08

我需要从所有行中删除S-x.xx值。因此,每条线只保存X Y和相关值。

我尝试使用Regex

if (Line.Contains("S"))
        {
           Regex rgx = new Regex(@"S\d+(\.\d+)?");
            Line = rgx.Replace(Line, "");
        }
        return Line;

但我没有得到我期望的结果。任何暗示都将受到赞赏。

由于

3 个答案:

答案 0 :(得分:1)

您可以使用以下RegEx:(X\d+ Y\d+).*

并使用$1

X字面匹配字符X(区分大小写)

\d+匹配一个数字(等于[0-9])一次或多次

Y字面匹配字符Y(区分大小写)

\d+匹配一个数字(等于[0-9])一次或多次

答案 1 :(得分:1)

您可以使用

var result = Regex.Replace(s, @"\s+S-\d+(?:\.\d+)?", string.Empty);

请参阅regex demo

  • \s+ - 1+空格
  • S- - S- substring
  • \d+(?:\.\d+)? - 数字模式:
    • \d+ - 1+位数
    • (?:\.\d+)? - 可选序列:
    • \. - dot
    • \d+ - 1+位。

答案 2 :(得分:0)

感谢您真的只想删除以<com.radesh.android.view.ViewPagerFixed xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 开头的最后一个第三个词。只需尝试用空字符串替换模式S

\sS.*$

Demo