Можно фильтровать элементы, которые припадки простое условие, чтобы соответствовать строки в Джулии:Использование регулярных выражений в фильтре в Джулии
y = ["1 123","2512","31 12","1225"]
filter(x-> ' ' in x, y)
[из]:
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
yep. это '[" 2512 "," 1225 "]', но вопрос более общий, спрашивая о том, как использовать 'filter()' с условиями 'match()'. – alvas