Тестирование, если персонаж существует с Regex - PullRequest
1 голос
/ 22 марта 2019

У меня есть несколько строк, с которыми я пытаюсь сопоставить

  1. Член команды кафе: Grovedale (Популярные)
  2. Член команды кафе: Barwon Heads (Featured)
  3. Член команды кафе: Barwon Heads

То, что я смог придумать, это /(?<=\:\s)(.+)(?=\s\()/g, который будет работать для вариантов 1 и 2, но 3 (потому что я ищу открытую скобку после местоположения), он не будет работать. Я озадачен тем, как еще я мог бы пойти по этому поводу.

Где я тестировал

Edit:

Похоже, все, что мне нужно было добавить, было |$, так что теперь это выглядит как /(?<=\:\s)(.+)(?=\s\(|$)/g, но при тестировании в codepen он все еще не правильно захватывает строку. Где regexr говорит, что должно работать.

// vue stuff
new Vue({
    el: "#app",
    data: {
        titles: [
          "Cafe Team Member: Grovedale (Featured)",
          "Cafe Team Member: Barwon Heads (Featured)",
          "Cafe Team Member: Barwon Heads",
        ]
    }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <template v-for="title in titles">
    <p>{{ title.match(/(?<=\:\s)(.+)(?=\s\(|$)/g) }}</p>
  </template>
</div>

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Ваше регулярное выражение не совпадает только потому, что за .+ должно следовать ?, что соответствует как можно меньшему числу раз.Без этого (.+) будет соответствовать до конца строки, и ваш позитивный взгляд ничего не будет соответствовать.

// vue stuff
new Vue({
    el: "#app",
    data: {
        titles: [
          "Cafe Team Member: Grovedale (Featured)",
          "Cafe Team Member: Barwon Heads (Featured)",
          "Cafe Team Member: Barwon Heads",
        ]
    }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <template v-for="title in titles">
    <p>{{ title.match(/(?<=\:\s)(.+?)(?=\s\(|$)/g) }}</p>
  </template>
</div>
1 голос
/ 22 марта 2019

Попробуйте использовать это регулярное выражение:

(?<=:\s)[^(\r\n]+

Нажмите для демонстрации

Пояснение:

  • (?<=:\s) - положительный взгляд сзади, чтобы соответствовать позиции, которой предшествует :, за которым следует пробел
  • [^(\r\n]+ - соответствует 1+ появлению любого символа, который не является ни (, ни символами новой строки. Это обеспечит совпадение всех символов, пока ( не будет найдено в одной строке. Если ( не найдено, оно совпадает до конца строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...