.NET Regex - 匹配后获取字符串

标签 .net regex

我正在使用一些通常遵循以下格式的字符串:

word1 word2 word3 word4

我最初的目标是返回第二个空格之后的字符串部分,从而得到:

word3 word4

我搜索了一些如何做到这一点,由于下一个正则表达式,我只成功检索了前两个单词,包括第二个空格(“word1 word2”):

^([^\s]*\s[^\s]*)\s

现在为了符合我最初的目标,我想找到方法返回实际上与给定模式不匹配的字符串的其余部分。有什么想法吗?

重要的是要通知我还必须处理以下情况:

"" -> ""
"word1" -> ""
"word1 word2" -> ""
"word1 word2 word3" -> "word3"
"word1 word2 word3 word4 wordX" -> "word3 word4 wordX"

基本上返回第二个间距之后的所有内容(如果有任何明显的!)。我还想避免替换或任何其他方法。

我提前感谢大家的回复,祝大家度过愉快的一天! 谨致问候,

最佳答案

您可能依赖 .NET 正则表达式中的可变长度lookbehind:

(?<=^(?:\S+\s+){2}).+

请参阅.NET regex demo ( \s 替换为空格,因为这是一个多行字符串演示,您可以将空格替换为 [\s-[\r\n]][\p{Zs}\t] 以仅匹配水平空白字符)。

详细信息

  • (?<=^(?:\S+\s+){2}) - 正向后查找将匹配紧接在字符串开头出现 2 次 1+ 非空白字符,后跟 1+ 空白字符的位置
  • .+ - 除换行符外的 1 个以上字符(如果在模式开始处添加 (?s),则 . 匹配任何字符)。

关于.NET Regex - 匹配后获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52369667/

相关文章:

c# - 数据网格中的焦点问题

c# - 从 .NET 中的域对象创建数据库模式

Python Regex 立即替换组

ios - Apple Pay 的服务器端支付 token 解密

c# - Pinvoke 中的一个问题

.net - 如何为 WinForms 应用程序和 SQL Server 实现 SSO(单点登录)

java - 使用正则表达式仅在循环中提取链接

javascript - 将 Sed 函数转变为 JavaScript 正则表达式

php - 用 <h2> 标签替换 <p class ="someClass"> 的正则表达式?

regex - '/[A-Z]/s| |/|gp'是什么意思?