Как проверить, если строки окружены пробелами - PullRequest
0 голосов
/ 29 января 2019

У меня есть следующий строковый шаблон в Python:

{{test1 | test2(a) | test3|test4}}

Я хочу проверить, содержит ли строка подстроки, которые не разделены пробелом до / после канала (|).

Таким образом, в этом примере следующие подстроки должны быть «помечены» как недействительные:

  • test3 (отсутствует пробел до |)
  • test4 (отсутствует пробел после |)

Я попробовал это с регулярным выражением (?<=\|)(\S*?)(?=\|), но безуспешно

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Я думаю, что это регулярное выражение должно работать:

(?<=\|)[^{}\s|]+|[^{}\s|]+(?=\|)

Есть два случая:

  • (?<=\|)[^{}\s|]+ для всего, что не имеет начального пробела (без пробела после |)
    • (?<=\|) выглядит сзади, и '|'
    • [^{}\s|]+ соответствует тексту, который вы хотите.(Любой символ, который не является пробелом, '|' или скобкой)
  • [^{}\s|]+(?=\|) для любой вещи, у которой нет завершающего пробела (без пробела перед |)
    • [^{}\s|]+ соответствует желаемому тексту.
    • (?=\|) ожидает «|»

Демо

0 голосов
/ 29 января 2019

Может быть, вы можете сделать цикл для проверки.

for(i=0, i < str.length, i++){
    value1 = str[i];
    value2 = str[i+1];
    value3 = str[i+2];
    if(value2 == '|'){
        if(value1 == ' '){
            // do what you want do here
        }else{}
        if(value3 == ' '){
            // do what you want do here
        }else{}
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...