如何定义匹配整个单词处理“。”的正则表达式。像一封普通的信

时间:2015-06-10 13:23:17

标签: regex matlab

我正在尝试从Matlab中读取一个字符串中的几个数字。目的是做str2num所做的事情,但不使用eval(并且不那么先进)。

我已经有一个匹配有效双号的正则表达式:

'([-+]?([0-9]*\.[0-9]+|[0-9]+\.|[0-9]+)([eE][-+]?([0-9]*\.[0-9]+|[0-9]+\.|[0-9]+))?)'

哪个适用于有效的子串,例如“1.15e2.4”。我的问题是我想避免匹配无效的子串,如“1.15.e2.4”(分为“1.15”和“2.4”)。

当我只匹配整个单词时(使用\<\>),无效字符串被拆分为“1.15”和“4”),因为小数点被认为是二进制字。< / p>

目前我正在使用外观表达式:

'((?<=^|[ :,])[-+]?([0-9]*\.[0-9]+|[0-9]+\.|[0-9]+)([eE][-+]?([0-9]*\.[0-9]+|[0-9]+\.|[0-9]+))?(?=$|[ :,]))'

但我想知道是否有更简单,更通用的方法。

是否可以重新定义哪些字符被视为字边界?

1 个答案:

答案 0 :(得分:1)

您无法重新定义单词边界的含义。但是,使用否定外观可以达到相同的效果:

<a ng-href="file:///F:/FilesStore/{{r.id_file}}-{{r.nameOfUploader}}" />

并不比第二个正则表达式简单得多,但更强大,因为它完全符合它的说法:禁止(?<!\.)\< your first regex here \>(?!\.) 作为单词边界。