У меня есть шаблон регулярного выражения, который, кажется, требует пространства в нем для работы, но я не могу понять, почему. Вот тестовый метод, который я сделал, я хочу совместить символы между двумя '
, но только тогда, когда он окружен другими символами и с дополнительными пробелами.Зачем этому регулярному выражению нужно пространство?
Private Sub RegexTestSub()
Dim testString = "Foo = ASSIGN/ 'Bar'"
Dim patternA = "(?<=Foo([ ]+)?=([ ]+)?ASSIGN\/([ ']+)?)[a-zA-Z0-9-_. ]+(?=([' ]+)?)"
Dim patternB = "(?<=Foo([ ]+)?=([ ]+)?ASSIGN\/ ([ ']+)?)[a-zA-Z0-9-_. ]+(?=([' ]+)?)"
Dim resultA As Match = Regex.Match(testString, patternA)
Dim resultB As Match = Regex.Match(testString, patternB)
End Sub
Оба матча, но resultB.Value
равно «Бар», но resultA.Value
это просто пространство. Единственное различие между шаблонами регулярных выражений - это пробел после ASSIGN\/
(о котором я знаю!) Я хочу, чтобы это пространство было необязательным, что, как я думал, достигнет ([ ']+)?
.
Другие примеры, которые должны соответствуют ...
Foo=ASSIGN/'Bar'
информация должна соответствовать Bar
Foo = ASSIGN/'Bar'
(Может быть несколько пробелов) должны соответствовать Bar
Foo = ASSIGN/ 'Foo.Bar.Foo.A1-0'
должен соответствовать Foo.Bar.Foo.A1-0
Спасибо! Кажется, что он работает отлично и намного понятнее читать! Строка, в которой я нуждаюсь, всегда будет окружена одинарными кавычками, поэтому первый вариант будет отличным. – Notts90
Я думаю, что вы можете обойтись без присмотра здесь. Просто запишите данные, которые вам нужны с помощью '(...) ' –
Мне нужен внешний вид, чтобы проверить назначаемый параметр. Я разбираю язык программирования для назначения определенного параметра (в данном случае' Foo') и получая строку, назначенную параметру (всегда окруженный одинарными кавычками) – Notts90