在Julia中,可以通过过滤符合简单条件的项目来匹配字符串:
y = ["1 123","2512","31 12","1225"]
filter(x-> ' ' in x, y)
[out]:
2-element Array{String,1}:
"1 123"
"31 12"
但是如果我想保留不符合筛选条件的项目,该怎么做呢?
这个语法是不正确的:
> y = ["1 123","2512","31 12","1225"]
> filter(x-> !' ' in x, y)
MethodError: no method matching !(::Char)
Closest candidates are:
!(::Bool) at bool.jl:16
!(::BitArray{N}) at bitarray.jl:1036
!(::AbstractArray{Bool,N}) at arraymath.jl:30
...
in filter(::##93#94, ::Array{String,1}) at ./array.jl:1408
以下也不是类似Python的写法:
> y = ["1 123","2512","31 12","1225"]
> filter(x-> ' ' not in x, y)
syntax: missing comma or ) in argument list
此外,我还尝试使用正则表达式:
> y = ["1 123","2512","31 12","1225"]
> filter(x-> match(r"[\s]", x), y)
TypeError: non-boolean (RegexMatch) used in boolean context
in filter(::##95#96, ::Array{String,1}) at ./array.jl:1408
除了检查一个字符串中是否包含空格之外,我如何使用正则表达式的 match()
方法来从字符串列表中过滤出特定的项?
["2512", "1225"]
,对吗? - RomanPerekhrest["2512", "1225"]
,但问题更通用,询问如何使用filter()
和match()
条件。 - alvas