муравей - размечает последовательность в подстроки, используя regex

У меня есть входная строка формата ABC; определение; топленое масло; jkl;........ и так далее. самая маленькая позволенная входная строка ABC , в то время как нет никакого ограничения на макс. количество символов. Также длина каждого символа НЕ прикреплена к 3. это может быть любое количество знаков.

для, например, Америка; Россия; ОАЭ являются также принятым входом

Я хочу вынуть первые три символа и сделать раздельное имущество из них. В случае, если есть меньше чем 3, тогда те соответствующие символы должны быть ПУСТОЙ УКАЗАТЕЛЬ .

До сих пор я попробовал много регулярных выражений (который я не доволен),

${testprop} contains the input string.

я использую следующую команду

propertyregex собственность = "testprop1" ввел =" $ {testprop}" regexp =, "(.*) (\;.*)* /" выбирают = "\1"

но это не работает. любые предложения для лучшего regex!!

0
Выше regex согласует любую последовательность меньше чем с 3 знаками. Можно проверить его здесь regex101.com/r/kW3vA5
добавлено автор om39a, источник
Выше regex согласует любую последовательность меньше чем с 3 знаками. Можно проверить его здесь regex101.com/r/kW3vA5
добавлено автор om39a, источник
Выше regex согласует любую последовательность меньше чем с 3 знаками. Можно проверить его здесь regex101.com/r/kW3vA5
добавлено автор om39a, источник
/ (? i) \b ([\w] {1,2} (? =;)) / Попытка этот regex
добавлено автор om39a, источник
я сожалею, я должен был прояснить, что символы могут быть любым количеством знаков и не ограничиваются 3.
добавлено автор user1856732, источник
я сожалею, я должен был прояснить, что символы могут быть любым количеством знаков и не ограничиваются 3.
добавлено автор user1856732, источник
я сожалею, я должен был прояснить, что символы могут быть любым количеством знаков и не ограничиваются 3.
добавлено автор user1856732, источник
om39a: спасибо, но жаль. это не соответствует входу.
добавлено автор user1856732, источник
om39a: спасибо, но жаль. это не соответствует входу.
добавлено автор user1856732, источник
om39a: спасибо, но жаль. это не соответствует входу.
добавлено автор user1856732, источник

6 ответы

Используйте этот regex, чтобы сократить, получают первые 3 знака, если они существуют.

/(? i) \b ([\w] {3} (? = [\w] *;))/

Проверяют Здесь

Используйте этот regex, чтобы получить последовательность, у кого есть стоимость меньше чем 3 знака.

/(? i) \b ([\w] {1,2} (? =;))/

Проверяют Здесь

0
добавлено
Только проверить что доза это заявление от вашего среднего вопроса? я хочу вынуть первые три и сделать раздельное имущество из них. В случае, если есть меньше чем 3, тогда те соответствующие символы должны быть ПУСТЫМИ.
добавлено автор om39a, источник
это означает, это для входной строки как "stringa; stringb; stringc; stringd" я хочу создать 3 свойства, сказать prop1 , prop2 и prop3 с ценностями stringa , stringb и stringc соответственно. Если, однако, входная строка - что-то как "stringa; stringb" тогда у свойств prop1 и prop2 будут ценности stringa и stringb , в то время как prop3 содержит стоимость ПУСТОЙ УКАЗАТЕЛЬ
добавлено автор user1856732, источник
но, в символе может быть больше чем 3 знака. вместо испытательной последовательности, что вы использующий для тестирования вашего regex' s.. попытайтесь использовать следующее и посмотрите, можно ли извлечь первые 3 символа/группы "stringa; stringb; stringc; stringd" от этого, попытайтесь извлечь "stringa", "stringb" и "stringc"
добавлено автор user1856732, источник

Используйте этот regex, чтобы сократить, получают первые 3 знака, если они существуют.

/(? i) \b ([\w] {3} (? = [\w] *;))/

Проверяют Здесь

Используйте этот regex, чтобы получить последовательность, у кого есть стоимость меньше чем 3 знака.

/(? i) \b ([\w] {1,2} (? =;))/

Проверяют Здесь

0
добавлено
Только проверить что доза это заявление от вашего среднего вопроса? я хочу вынуть первые три и сделать раздельное имущество из них. В случае, если есть меньше чем 3, тогда те соответствующие символы должны быть ПУСТЫМИ.
добавлено автор om39a, источник
это означает, это для входной строки как "stringa; stringb; stringc; stringd" я хочу создать 3 свойства, сказать prop1 , prop2 и prop3 с ценностями stringa , stringb и stringc соответственно. Если, однако, входная строка - что-то как "stringa; stringb" тогда у свойств prop1 и prop2 будут ценности stringa и stringb , в то время как prop3 содержит стоимость ПУСТОЙ УКАЗАТЕЛЬ
добавлено автор user1856732, источник
но, в символе может быть больше чем 3 знака. вместо испытательной последовательности, что вы использующий для тестирования вашего regex' s.. попытайтесь использовать следующее и посмотрите, можно ли извлечь первые 3 символа/группы "stringa; stringb; stringc; stringd" от этого, попытайтесь извлечь "stringa", "stringb" и "stringc"
добавлено автор user1856732, источник

Используйте этот regex, чтобы сократить, получают первые 3 знака, если они существуют.

/(? i) \b ([\w] {3} (? = [\w] *;))/

Проверяют Здесь

Используйте этот regex, чтобы получить последовательность, у кого есть стоимость меньше чем 3 знака.

/(? i) \b ([\w] {1,2} (? =;))/

Проверяют Здесь

0
добавлено
Только проверить что доза это заявление от вашего среднего вопроса? я хочу вынуть первые три и сделать раздельное имущество из них. В случае, если есть меньше чем 3, тогда те соответствующие символы должны быть ПУСТЫМИ.
добавлено автор om39a, источник
это означает, это для входной строки как "stringa; stringb; stringc; stringd" я хочу создать 3 свойства, сказать prop1 , prop2 и prop3 с ценностями stringa , stringb и stringc соответственно. Если, однако, входная строка - что-то как "stringa; stringb" тогда у свойств prop1 и prop2 будут ценности stringa и stringb , в то время как prop3 содержит стоимость ПУСТОЙ УКАЗАТЕЛЬ
добавлено автор user1856732, источник
но, в символе может быть больше чем 3 знака. вместо испытательной последовательности, что вы использующий для тестирования вашего regex' s.. попытайтесь использовать следующее и посмотрите, можно ли извлечь первые 3 символа/группы "stringa; stringb; stringc; stringd" от этого, попытайтесь извлечь "stringa", "stringb" и "stringc"
добавлено автор user1856732, источник

Спасибо все. Я наконец разработал ответ.

Используя следующий regex,
([^;] +) ([;]? [^;] *) ([;]?) ([;]? [^;] *) ([;]?)

мы можем получить первые 3 символа последовательности в группах 1 , 2 и 4 соответственно. Но группа 2 идет с предыдущим ; , который может быть далее удален, применившись \; (.*) и группа извлечения 1 .

property name="inputString" value="russia;uae;germany;africa;"

propertyregex property="string1" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\1"

propertyregex property="string2" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\2"

propertyregex property="string3" input="${string2}" regexp="\;(.*)" select="\1"

propertyregex property="string4" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\4"

Это дает вам желаемые первые три символа в string1, string3 и string4

string1 = russia

string3 = uae

string4 = Германия

0
добавлено

Спасибо все. Я наконец разработал ответ.

Используя следующий regex,
([^;] +) ([;]? [^;] *) ([;]?) ([;]? [^;] *) ([;]?)

мы можем получить первые 3 символа последовательности в группах 1 , 2 и 4 соответственно. Но группа 2 идет с предыдущим ; , который может быть далее удален, применившись \; (.*) и группа извлечения 1 .

property name="inputString" value="russia;uae;germany;africa;"

propertyregex property="string1" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\1"

propertyregex property="string2" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\2"

propertyregex property="string3" input="${string2}" regexp="\;(.*)" select="\1"

propertyregex property="string4" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\4"

Это дает вам желаемые первые три символа в string1, string3 и string4

string1 = russia

string3 = uae

string4 = Германия

0
добавлено

Спасибо все. Я наконец разработал ответ.

Используя следующий regex,
([^;] +) ([;]? [^;] *) ([;]?) ([;]? [^;] *) ([;]?)

мы можем получить первые 3 символа последовательности в группах 1 , 2 и 4 соответственно. Но группа 2 идет с предыдущим ; , который может быть далее удален, применившись \; (.*) и группа извлечения 1 .

property name="inputString" value="russia;uae;germany;africa;"

propertyregex property="string1" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\1"

propertyregex property="string2" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\2"

propertyregex property="string3" input="${string2}" regexp="\;(.*)" select="\1"

propertyregex property="string4" input="${inputString}" regexp="([^;]+)([;]?[^;]*)([;]?)([;]?[^;]*)([;]?)" select="\4"

Это дает вам желаемые первые три символа в string1, string3 и string4

string1 = russia

string3 = uae

string4 = Германия

0
добавлено