История изменений
Исправление loz, (текущая версия) :
Есть язык Red (и его прородитель Rebol) в которых вместо регулярок используется полноценный dsl встроенный в язык что намного мощнее, читабельнее, и вроде не сильно уступает по скорости. Например:
four: charset "01234"
half: charset "012345"
non-zero: charset "123456789"
digit: union non-zero charset "0"
byte: [
"25" half
| "2" four digit
| "1" digit digit
| non-zero digit
| digit
]
ipv4: [byte dot byte dot byte dot byte]
parse "192.168.10.1" ipv4
И можно выполнять код во время матчинга, например сохранить заматченный адрес в переменную:
parse data [some [copy value ipv4 | skip]]
Исправление loz, :
Есть язык Red (и его прородитель Rebol) в которых вместо регулярок используются полноценные dsl встроенные в язык что намного мощнее, читабельнее, и вроде не сильно уступает по скорости. Например:
four: charset "01234"
half: charset "012345"
non-zero: charset "123456789"
digit: union non-zero charset "0"
byte: [
"25" half
| "2" four digit
| "1" digit digit
| non-zero digit
| digit
]
ipv4: [byte dot byte dot byte dot byte]
parse "192.168.10.1" ipv4
И можно выполнять код во время матчинга, например сохранить заматченный адрес в переменную:
parse data [some [copy value ipv4 | skip]]
Исправление loz, :
Есть язык Red (и его прородитель Rebol) в которых вместо регулярок используются полноценные dsl встроенные в язык что намного мощнее, читабельнее, и вроде не сильно уступает по скорости. Например:
four: charset "01234"
half: charset "012345"
non-zero: charset "123456789"
digit: union non-zero charset "0"
byte: [
"25" half
| "2" four digit
| "1" digit digit
| non-zero digit
| digit
]
ipv4: [byte dot byte dot byte dot byte]
parse "192.168.10.1" ipv4
Исправление loz, :
Есть язык Red (и его прородитель Rebol) в которых вместо регулярок используются полноценные dsl встроенные в язык что намного мощнее, читабельнее, и вроде не сильно уступает по скорости. Например:
[code] four: charset «01234» half: charset «012345» non-zero: charset «123456789» digit: union non-zero charset «0»
byte: [
"25" half
| "2" four digit
| "1" digit digit
| non-zero digit
| digit
]
ipv4: [byte dot byte dot byte dot byte]
parse "192.168.10.1" ipv4
[/code]
Исходная версия loz, :
Есть язык Red (и его прородитель Rebol) в которых вместо регулярок используются полноценные dsl встроенные в язык что намного мощнее, читабельнее, и вроде не сильно уступает по скорости. Например:
[code] four: charset «01234» half: charset «012345» non-zero: charset «123456789» digit: union non-zero charset «0»
byte: [
"25" half
| "2" four digit
| "1" digit digit
| non-zero digit
| digit
]
ipv4: [byte dot byte dot byte dot byte]
parse "192.168.10.1" ipv4
[/code]