2016-03-31 15 views
6

Mam stronę xml że mam skanowanie systemu monitoringu, oto dane źródło:Radzenie sobie ze znakami mowy z String.match

`<queues> 
<queue name="workQueue"> 
<stats size="0" consumerCount="28" enqueueCount="29320" dequeueCount="37000"/> 

A oto kod mam tak daleko:

local pattern = " size=(%d+) " 

local a = alarm.get("CO13974960-19518") 

local vsize = string.match(a.message, pattern) 

local sum = vsize 

staram się kierować tym trochę danych ze strony XML:

stats size="0" 

wartość „0” oznacza liczbę Jestem zainteresowany, A Poszukuję sposobu na uchwycenie tej postaci (bez względu na to, co się osiągnie) za pomocą skryptu.

myślę, że mój skrypt poszukuje:

size=0 zamiast size="0"

Ale jestem pewny poprawnej składni o tym, jak to zrobić.

+3

Zastosowanie uciekł cytaty wewnątrz napisowych: 'lokalnego wzorca = "size = \" (% d +) \ "" –

+0

Dziękuję, to działa idealnie! – greenage

Odpowiedz

5

Ogólnie rzecz biorąc, nie jest dobrym pomysłem użycie wzoru Lua (lub regex) do parsowania XML, zamiast tego użyj parsera XML.


W każdym razie, w tym przykładzie,

local pattern = " size=(%d+) " 
  • sprawy spacją, tak białej przestrzeni na początku i na końcu są próbując dopasować znak spacji białe, ale nie powiodło się.
  • Zauważyłeś już, że potrzebujesz podwójnych ofert około (%d), muszą one być chronione cudzysłowami w cudzysłowach.
  • + jest chciwy, to może działać tutaj, ale nie-chciwy - jest lepszym wyborem .

Działa

local pattern = "size=\"(%d-)\"" 

Uwaga można użyć apostrofów sznurki tak, że nie trzeba uciekać cudzysłowów:

local pattern = 'size="(%d-)"' 
Powiązane problemy