![Regex-Musterproblem für die Ziffernvalidierung in KSH](https://rvso.com/image/192233/Regex-Musterproblem%20f%C3%BCr%20die%20Ziffernvalidierung%20in%20KSH.png)
Ich habe ein KSH-Skript geschrieben, um zu überprüfen, ob die Spalte numerisch ist. Das Regex-Muster ist in einer Konfigurationsdatei wie definiert \d+.\d+
. Aber das funktioniert nicht, wenn ich d
das Muster verwende. [0-9]{1,9}
Funktioniert jedoch. Irgendwelche Erkenntnisse dazu?
- Hier ist die KSH-Version, die ich verwende:
$ ksh --version version sh (AT&T Research) 93u+ 2012-08-01
- Codeausschnitt für den Mustervergleich. Wenn ich es so angebe,
$col_patt
wie\d+
es nicht funktionieren würde, aber[0-9]{1,}
es wird funktionierenval=$(awk -F "$sep" -v n="$col_pos" -v m="$col_patt" 'NR!=1 && $n !~ "^" m "$" { printf "%s:%s:%s\n", FILENAME, FNR, $n > "/dev/stderr" count++ } END {print count+0}' "$cp_input" 2>> $script_path/errors_${file_name_patt}.log )
- Hier ist das verwendete Muster:
\d*\.\d+
Antwort1
Verschiedene Dienstprogramme, Sprachen, Regex-/Musterbibliotheken und APIs unterstützen unterschiedliche Operatoren/Platzhalter.
\d
ist ein Perl-Regex-Operator, der eine Dezimalstelle abgleicht (im Allgemeinen alle von 0123456789
, kann aber unter bestimmten Bedingungen auch auf andere Dezimalstellen abgleichen (es gibt Hunderte in Unicode, wie zum Beispiel 0123456789٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹߀߀߁߂߃߄߅߆߇߈߉०१२३४५६७८९০১২৩৪৫৬৭৮৯੦੧੨੩੪੫੬੭੮੯૦૧૨૩૪૫૬૭૮૯୦୧୨୩୪୫୬୭୮୯௦௧ ௨௩௪௫௬௭௮௯౦౧౨౩౪౫౬౭౮౯೦೧೨೩೪೫೬೭೮೯൦൧൨൩൪൫൬൭൮൯෦෧෨෩෪෫෬෭ ෮෯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩ ၀၁၂၃၄၅၆၇၈၉႐႑႒႓႔ ႕႖႗႘႙០១២៣៤៥៦៧៨៩᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙᪀ ᪁᪂᪃᪄᪅᪆᪇᪈᪉᪐᪑᪒᪓᪔᪕᪖᪗᪘᪙᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹᱀᱁᱂᱃᱄᱅᱆ ᱇᱈᱉᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉꧐꧑꧒ ꧓꧔꧕꧖꧗꧘꧙꧰꧱꧲꧳꧴꧵꧶꧷꧸꧹꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙꯰꯱꯲꯳꯴꯵꯶꯷꯸꯹0123456789