我仍然试图拿起正则表达式,所以我似乎无法想出这个。我想能够匹配任何类型的数字,包括
之类的东西[+-]?[0-9+\.]+([E][+-]?[0-9]+)?
我创建了以下正则表达式,它匹配所有这些:param.attribute
,但是这也匹配单个小数点,例如,如果我有类似[0-9+\.]
的东西,它会拾取小数点。我怎么能绕过这个?我认为在+
部分ListView
要求字符串包含至少一个数值。
答案 0 :(得分:3)
您可以使用轮换来确保1.
或.1
匹配。如果您不想以匹配的单个句点结束,请避免使所有子模式都可选:
[-+]?(?:[0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)(?:[eE][-+]?[0-9]+)?
^--- Alernative 1 | Alternative 2-^
请参阅regex demo
更多"fun" facts about alternation in regular expressions:
您可以使用交替来匹配几个可能的正则表达式中的单个正则表达式。
如果要搜索文字文本cat
或dog
,请使用竖线或竖线符号分隔这两个选项:cat|dog
。如果您想要更多选项,只需展开列表:cat|dog|mouse|fish
。
交替运算符具有所有正则表达式运算符的最低优先级。也就是说,它告诉正则表达式引擎匹配垂直条左侧的所有内容,或垂直条右侧的所有内容。如果要限制更改的范围,则需要使用括号进行分组。
这是我的5美分:为了保持正则表达式匹配尽可能干净,除非你需要在找到匹配后访问任何替代方案,否则使用非捕获组(即{ {1}})替换。
答案 1 :(得分:1)