我正在尝试从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]+))?(?=$|[ :,]))'
但我想知道是否有更简单,更通用的方法。
是否可以重新定义哪些字符被视为字边界?
答案 0 :(得分:1)
您无法重新定义单词边界的含义。但是,使用否定外观可以达到相同的效果:
<a ng-href="file:///F:/FilesStore/{{r.id_file}}-{{r.nameOfUploader}}" />
并不比第二个正则表达式简单得多,但更强大,因为它完全符合它的说法:禁止(?<!\.)\< your first regex here \>(?!\.)
作为单词边界。