我有一个像“10-16.7”这样的文字字符串。我想过滤它并取第一个数字。在这个例子中,我想只过滤数字10。
我认为这是正确的正则表达式:(["'])(.*-*)-.*
但是当我在我的查询中尝试它时,它无法识别[“']模式。
所以我发现了
但是当我尝试FILTER regex(?mystring, "(\")(.*-*)-.*") }
时,它不会给出错误,但它也没有捕捉到任何错误。 (我的数据集包含“50-58”,“9.4-13”,“72-85”等值。)
答案 0 :(得分:1)
如果您有一个数字,后跟一个短划线后跟任何内容,我会使用以下正则表达式(假设您不必担心数字有效,因为这匹配"00323..23....3.-2"
之类的字符串,例如):
^([0-9.]+)-.*
我假设引号实际上不是字符串的一部分。如果是,请添加\"
:^\"([0-9.]+)-.*
要提取数字,您需要将BIND
变为一个变量,如下所示:
FILTER(REGEX(?test, "^[0-9.]+-"))
BIND(REPLACE(?mystring, "^([0-9.]+)-.*", "$1") AS ?number)
这里我通过将第一个捕获组($1
)替换为匹配数字的字符串来获取数字,并将结果绑定到名为?number
的变量。