Regex 正则表达式-提取相似群
我必须解释一组文件,其中每一行代表某个最大浮点值Regex 正则表达式-提取相似群,regex,Regex,我必须解释一组文件,其中每一行代表某个最大浮点值 {...} SomeMaximumVal: 630.0 (AB300: 420.0) (AB301: 220.0) SomeOtherMaximumVal: 610.0 (AB300: 410.0) (AB301: 210.0) {...} 因此,单行可以只包含一个公共值,例如 SomeMaximumVal: 630.0 SomeMaximumVal: 630.0 (AB300: 420.0) SomeMaximumVal: 630.0 (
{...}
SomeMaximumVal: 630.0 (AB300: 420.0) (AB301: 220.0)
SomeOtherMaximumVal: 610.0 (AB300: 410.0) (AB301: 210.0)
{...}
因此,单行可以只包含一个公共值,例如
SomeMaximumVal: 630.0
SomeMaximumVal: 630.0 (AB300: 420.0)
SomeMaximumVal: 630.0 (AB300: 420.0) (AB301: 220.0)
SomeMaximumVal: (AB300: 420.0) (AB301: 220.0)
或一个通用值和一个特定于应用程序的值,例如
SomeMaximumVal: 630.0
SomeMaximumVal: 630.0 (AB300: 420.0)
SomeMaximumVal: 630.0 (AB300: 420.0) (AB301: 220.0)
SomeMaximumVal: (AB300: 420.0) (AB301: 220.0)
或一个通用值和一个以上的应用程序特定值,例如
SomeMaximumVal: 630.0
SomeMaximumVal: 630.0 (AB300: 420.0)
SomeMaximumVal: 630.0 (AB300: 420.0) (AB301: 220.0)
SomeMaximumVal: (AB300: 420.0) (AB301: 220.0)
或者没有通用值,只有一个或多个特定于应用程序的值,例如
SomeMaximumVal: 630.0
SomeMaximumVal: 630.0 (AB300: 420.0)
SomeMaximumVal: 630.0 (AB300: 420.0) (AB301: 220.0)
SomeMaximumVal: (AB300: 420.0) (AB301: 220.0)
现在我想通过正则表达式提取这些值
\s*(?:(\S*)\s*:\s*([0-9\.-]*)(?:\s*\(\s*(\S*)\s*:\s*([0-9\.-]+)\)))
但是,例如,文件的结果
SomeMaximumVal: 630.0 (AB300: 420.0) (AB301: 220.0)
SomeOtherMaximumVal: 610.0 (AB300: 410.0) (AB301: 210.0)
它们是:
仅包括每个应用程序特定值的第一个
问题是:如何扩展正则表达式以包含更多的值?您可以使用
(\w+)\s*:\s*(-?[0-9]+(?:\.[0-9]+)?)
看
详细信息
-第1组:一个或多个单词字符(\w+)
-用0+空格括起来的冒号\s*:\s*
-第2组:(?[0-9]+(?:\[0-9]+))
-1或0连字符-?
-1位或更多数字[0-9]+
-1或0次出现:(?:\.[0-9]+)?
-一个点\。
-1个或多个数字[0-9]+