Регулярное выражение для совпадающей строки, например: "<any_string> + <any_string> + <any_string>" - PullRequest
3 голосов
/ 25 февраля 2010

Регулярное выражение для соответствующей строки, например:

"<any_string>+<any_string>+<any_string>"?

Ответы [ 6 ]

2 голосов
/ 25 февраля 2010

Звучит так же просто, как:

.*\+.*\+.*

.* соответствует any_string, пока \+ не совпадет с символом "+".

1 голос
/ 25 февраля 2010

Это соответствует S+S+S, где все три вхождения S - это одна и та же строка, которая < и > окружает любую (возможно пустую) строку:

(<[^>]*>)\+\1\+\1

Другими словами, это соответствует:

<a>+<a>+<a>

Но это не соответствует

<a>+<b>+<a>

S должен быть окружен < и >; может содержать +. Итак, это соответствует:

<a+b>+<a+b>+<a+b>
1 голос
/ 25 февраля 2010

вот способ без регулярных выражений. На вашем любимом языке, разделите на «+», проверьте длину массива, равную 3. pseudocode:

s = split(mystring,"+")
if length(s) = 3 then
  .....
end if 

Чтобы быть более "точным", разделите на "> + <" </p>

0 голосов
/ 25 февраля 2010

Если any_string не будет содержать символ-разделитель >, вы можете легко сделать это, используя:

<([^>]+)>\+<([^>]+)>\+<([^>]+)>

$1, $2 и $3 в совпадении будут содержать 1-ю, 2-ю и 3-ю строки соответственно. Это регулярное выражение не допускает пустых строк - измените ([^>]+) на ([^>]*), чтобы разрешить пустые строки между < и >.

0 голосов
/ 25 февраля 2010

возможно попробуйте это

/.*\+.*\+.*/
0 голосов
/ 25 февраля 2010

Это то, что вы ищете?

[\w\\+]*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...