Вопрос касается записи регулярных выражений для двоичных строк.Бинарная строка Regex содержит по крайней мере и заканчивается
Как вы пишете одно такое, чтобы оно заканчивалось 00, а также другое, такое, что оно содержит как минимум три 1?
Вопрос касается записи регулярных выражений для двоичных строк.Бинарная строка Regex содержит по крайней мере и заканчивается
Как вы пишете одно такое, чтобы оно заканчивалось 00, а также другое, такое, что оно содержит как минимум три 1?
Заканчивается 00
:
^[01]*00$
содержит по меньшей мере три 1
S:
^(?=.*(?:0*1){3})[01]*$
Оба:
^(?=.*(?:0*1){3})[01]*00$
Объяснение:
^ # Start of string
(?= # Assert that the following could be matched here:
.* # Any number of characters
(?:0*1) # followed by any number of 0s and exactly one 1
{3} # three times
) # End of lookahead
[01]* # Match any number of ones or zeroes
00 # Match two zeroes
$ # at the end of the string
Поскольку строка может содержать только единицы и нули, нам фактически не нужно искать. Далее будет работать так же хорошо (но только в этих конкретных обстоятельств):
^(?:0*1){3}[01]*00$
Чтобы уточнить, служит ли ссылка? –
'*' означает «0 или более предшествующего токена». –
Альтернативное решение не с использованием регулярных выражений:
private static final BigInteger FOUR = new BigInteger("4");
public boolean binaryStringIsOK(final String input)
{
final BigInteger b;
try {
b = new BigInteger(inputString, 2);
return b.mod(FOUR).equals(BigInteger.ZERO)
&& b.bitCount() >= 3;
} catch (NumberException ignored) {
return false;
}
}
«заканчивается 00» означает состояние, в базе 10 , он кратен 4; поэтому остальная часть целочисленного деления на 4 равна 0. И функция .bitCount()
делает все остальное.
Альтернатива "заканчивается 00", чтобы проверить, логико-3 является ли это число 0:
// THREE = new BigInteger("3")
b.and(THREE).equals(BigInteger.ZERO)
Это проверка регулярных выражений ...
заканчивается 00
00$
три 1-х
(10*){3}
Для полного соответствия
^[01]*00$
^0*(10*){3}[01]*$
Как долго эти двоичные строки? – fge
Они могут быть любой длины. –