2016-09-28 4 views
0

У меня есть 2 типа строк один с «Сообщение:» и «Приоритет:» и другие без него.Как создать выражение регулярных выражений

string str1 = [AE][1W] Message:test mesage Priority:Info 
string str2 = test message 

Я хотел бы подготовить Regex выражение, чтобы проверить наличие «Message:» и «Priority:» в строке.

Ниже не работает,

(Message:[A-Za-z]\w+ Priority:[A-Za-z])\w+ 

каким оно должно быть?

+0

'\ w' только поймать * слово * символы, а не пустое пространство , поэтому он найдет 'test', а затем прекратит сопоставление. Не могли бы вы рассказать нам больше о правилах для того, что вы хотите совместить, и что не должно совпадать? Если нет, попробуйте просто заменить '\ w +' на '. +'. –

ответ

1

Вы можете изменить регулярное выражение:

(Message:[A-Za-z]+ \w+ Priority:[A-Za-z])\w+ 

, чтобы заставить его работать. Однако я бы написать это нравится:

Message:(\w+[ ]?)+Priority:(\w+[ ]?)+ 

Так что может быть более чем 1 слово после Message или Priority.

0

Ссылаясь на your question

string str = "[AE][1W] Message:test message Priority:Info Time:Sep 22 2016 11:59PM Tag:/System Compon/ Source:CONSOLE STATION IsAck:1 IsRtn:0 IsNew:1"; 

Попробуйте это:

Message:([\w\s]+)Priority:([\w\s]+)Time:([\w\s:]+)Tag:([/\w\s]+)Source:([\w\s]+)IsAck:([\w\s]+)IsRtn:([\w\s]+)IsNew:([\w\s]+) 

ниже может быть даже лучше:

Message:([\w\s]+)Priority:([\w\s]+)Time:([\w\s:]+)Tag:([/\w\s]+)Source:([\w\s]+)IsAck:(\d) IsRtn:(\d) IsNew:(\d) 
Смежные вопросы