【问题标题】:Select string ">" end point选择字符串 \">\" 结束点
【发布时间】:2022-11-16 22:03:06
【问题描述】:

早上好。

我必须只选择从“>”到最后一个点(不是第一个点)包含的字符。我试过字符串(^>[a-zA-Z]+$)但有些东西不起作用。我能得到一些帮助吗?谢谢你。

Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat.

>Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat.

十分感谢!

【问题讨论】:

  • 抱歉,我无法让“代码”标签包含“>”字符...
  • 请发布您尝试过的代码,这应该相对简单,找到起始字符的索引,然后找到最后一个字符的索引,然后使用Substring 访问其间的所有内容。如果您发布代码,我们可以提供您更有可能接受和理解的回复
  • 我基本上只需要选择中间部分。谢谢!
  • 这是什么语言?
  • 并且您想捕获 >. 还是仅捕获它们之间的字符。显示预期的输出会有所帮助。

标签: regex select


【解决方案1】:

我做了一个使用 javascript 的示例来获得一个工作演示,但由于我必须使用一种策略,其中常用的 .(点)也应该匹配换行符,在这种情况下,我被迫改用 [sS]

正则表达式 ^>[sS]+. 期望在该行的开头找到一个 >,然后是任何字符,直到找到最后一个点,然后是一个新行。

该演示将正则表达式与全文匹配,并如您所料仅返回中间部分:

const subject = `
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat.

>Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat.`;

var re = /^>[sS]+.
/im;
var match = re.exec(subject);
if (match != null) {  
    result = match[0];
} else {
    result = "";
}

console.log(result);

【讨论】:

    【解决方案2】:

    C# .Net 解决方案

    (>[sS]*.)

    或者,如果您不想捕获 >.,那么您可以使用积极向后看积极展望.

    • 要匹配所有字符和中间的空格,我们可以使用[sS]* 由于主动匹配,这在 .Net 中默认工作

    (?<=>)([sS]*)(?=.)

    试试这个小提琴:https://dotnetfiddle.net/3ukM0X

    public static void Main()
    {
        string content = @"Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
    
    "">""Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
    
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.";
        
        var regex = new System.Text.RegularExpressions.Regex(@"(?<=>)([sS]*)(?=.)");
        Console.WriteLine(regex.Match(content));
    }
    

    退货:

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
    
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多