我正在使用一些通常遵循以下格式的字符串:
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/