RegEx для соответствия, если строка содержит специальные символы в Юлии - PullRequest
1 голос
/ 04 мая 2019

файл app_ids.txt имеет следующий формат:

app1 = "0123456789"
app2 = "1234567890"
app3 = "2345678901"
app4 = "3456789012"
app5 = "4567890123"

печать строк, содержащих данное регулярное выражение со следующим кодом в файле find_app_id.jl:

#! /opt/julia/julia-1.1.0/bin/julia

function find_app_id()
   app_pattern = "r\"app2.*\"i"
    open("/path/to/app_ids.txt", "r") do apps
        for app in eachline(apps)
            if occursin(app_pattern, app)
                println(app)
            end
         end
    end
end
find_app_id()

$ / home / julia / find_app_id.jl, не печатает вторую строку, хотя она содержит регулярное выражение!

Как мне решить эту проблему?

Ответы [ 2 ]

3 голосов
/ 04 мая 2019

Ваше регулярное выражение выглядит странно.Если вы измените строку, присваивающую app_pattern на

app_pattern = r"app2.*"

, она должна работать лучше.

Например, следующие команды выводят «Found it» при запуске:

app_pattern = r"app2.*"
if occursin(app_pattern, "app2 = blah-blah-blah")
  println("Found it")
else
  println("Nothing there")
end

Удачи.

1 голос
/ 04 мая 2019

Я не уверен, как сопоставление регулярных выражений работает в Юлии, этот пост может помочь вам разобраться.

Однако, в общем, ваш шаблон довольно прост, и вам, вероятно, не нужно сопоставление регулярных выражений для выполнения этой задачи.

Этот RegEx может помочь вам создать свое выражение.

^app[0-9]+\s=\s\x22([0-9]+)\x22$

В середине, где находятся желаемые идентификаторы приложений, находится простой ([0-9]+), и вы можете просто позвонить им, используя $1:

enter image description here

Этот график показывает, как будет работать выражение:

enter image description here

...