Mam wyrażeń regularnych, które moim zdaniem działały poprawnie do tej pory. Muszę dopasować opcjonalny znak. Może tam być, albo nie.Regex, jak dopasować opcjonalny znak
Oto dwa ciągi. Górny ciąg jest dopasowywany, a niższy nie. Brak pojedynczej litery w dolnym ciągu jest przyczyną niepowodzenia.
Chciałbym dostać pojedynczą literę po 5 początkowych cyfrach, jeśli jest, a jeśli nie, kontynuować pobieranie pozostałej części łańcucha. Ten list może być A-Z
.
Jeśli usuniemy ([A-Z]{1}) +.*? +
z wyrażenia regularnego, będzie pasować do wszystkiego, czego potrzebuję oprócz litery, ale jest to ważne.
20000 K Q511195DREWBT E00078748521
30000 K601220PLOPOH Z00054878524
Oto wyrażeń regularnych, których używam.
/^([0-9]{5})+.*? ([A-Z]{1}) +.*? +([A-Z]{1})([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3}) +([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})/
Tim, szczerze mówiąc nie jestem pewien, ponieważ nie napisałem tego wyrażenia. Wciąż jestem całkiem nowy, by wyrecytować. Jeśli widzisz lepszy sposób pisania tego, jestem otwarty na sugestie. – jim
Tim, twój przykład działa dla obu łańcuchów, czy mam literę na tej pozycji, czy nie. Dzięki. – jim