我有一个格式如下的输入:我们在字符串的开头有任意数量的空格,然后我们有一个可以是任何内容的数据子字符串,并且它以非空格字符开头和结尾。在数据之后,我们再次有任意数量的空格(至少一个),一个数字和空格再次......
这个规范确实不准确,我想知道如何匹配它。显然,匹配开头和结尾的空格以及末尾的数字相当容易。最终的正则表达式如下所示: R("\s*(X)\s+([0-9]+)\s*)"
其中 (X)
是与一切相配的东西。但是我不确定这个 (X)
应该是什么样子。如何解决这个问题?
还有一件事 - 如果正则表达式匹配整行,那么我想要获取末尾的数据和数字,因此仅查找数字并不是解决方案。
澄清:在最终的正则表达式中,我想将子字符串和最终数字作为两个正则表达式组获取。
最佳答案
你可以使用
^\s*(\S.*?)\s+([0-9]+)\s*$
含义:
- 字符串开头
^
- 任意数量的空白字符
\s*
- 非空白
\S
- 任何东西,但不贪婪
.*?
- 一个或多个空白字符
\s+
- 一个数字
[0-9]+
- 任意数量的空白字符
\s*
- 字符串结尾
$
保留修剪后的数据和数量作为匹配结果
关于c++ - 正则表达式 - 将所有内容与末尾的数字匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33154584/