Я не очень хорошо с регулярными выражениями, может кто-то помочь мне с регулярным выражением с этими спецификациями:Regex Количество Диапазон нескольких диапазонов
Любое целое число между 0-365 или 888
Я не очень хорошо с регулярными выражениями, может кто-то помочь мне с регулярным выражением с этими спецификациями:Regex Количество Диапазон нескольких диапазонов
Любое целое число между 0-365 или 888
Учитывая разъяснения, я этот вопрос действительно интересный. Если учесть, что лексическое представление числа может быть в терминах XSD, тогда существуют законные шаблоны, где это может делать только регулярное выражение. Например, требование может заключаться в запрещении ведущих нулей.
Конечно, больше аргументов может быть сделано против регулярных выражений для такого сценария; если взять буквально то, что задает вопрос, то есть для any number
, тогда поплавки, удвоения и десятичные знаки (бит) добавляют к сложности. Итак, допустим любой номер .
Я не потратил слишком много времени на оптимизацию шаблона, больше сосредоточился на том, чтобы сделать его доступным для чтения, но я покажу его ниже (в XSD шаблоны являются имплицитными, начинаются и заканчиваются), а также другие параметры, используемые для тестирования различные реализации ...
<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="test">
<xsd:complexType>
<xsd:attribute name="pattern">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt">
<xsd:pattern value="0*([1-2]*[0-9]{1,2}|3[0-4][0-9]|35[0-6]|888)"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="uint">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt"/>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="other">
<xsd:simpleType>
<xsd:union>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt">
<xsd:enumeration value="888"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt">
<xsd:maxInclusive value="356"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:schema>
И некоторые XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<test pattern="0000356" uint="0000888" other="0356"/>
Очень хорошо сделано. И вы были правы предположить, что я должен был сказать целый номер. Я искал регулярное выражение, чтобы решить это, потому что перечислять 0-365, а затем запись для 888 была бы утомительной, и я пытаюсь укрепить свои навыки регулярного выражения. –
Regex является неправильным инструментом для этого. – SLaks
Знаете ли вы, что разные языки интерпретируют регулярное выражение по-разному? Какой язык вы используете. Будьте конкретны – hop
@SLaks Очень верно !! – hop