[英]Regular Expression match but not include
我正在嘗試使用正則表達式僅根據以下字符串(回車符在字符串中)選擇粗體(減去*)。 我要從中選擇的每個字符串都以ISA開頭。 我一直在嘗試使用(?<=ISA\\\\*)(\\w*)
,但是每當我開始添加要排除在(?<...)
部分中的其他字符時,我都找不到任何字符火柴。
ISA * 00 * * 00 * * ZZ *某些字符串* ZZ * 99999999 * 130605 * 2239 * | * 00501 * 000000001 * 0 * P *>
參考* TJ * 12345677 *
編號* PQ * 23432211
LX * 1
以下應該工作:
^ISA(?:[^*]*[*][^*]*){8}\*(\d+)\*
參見http://regex101.com/r/lU8sC8/1
工作方式:
^ISA — start of string has "ISA"
(?: — non-capturing group
[^*]*[*][^*]* — zero or more non-asterisks, followed by asterisk, followed by non-asterisk
{8} — eight of these
\* — one more asterisk
(\d+) — capture one or more digits
\* — followed by another asterisk
我不會使用Regex來解析X12 EDI文檔。 一個很好的起點將在這里
查看該鏈接,您將發現字段定界符始終位於ISA行的位置104,子定界符始終位於ISA行的位置105,而記錄定界符則始終位於106。(如果不是)那里您沒有有效的X12)。
使用該代碼,我會做類似的事情(如果您正在專門查找ISA記錄的字段7):
var fieldDelimiter = line[103]; //where 'line' = your ISA Line, and remember 0 based index
var fieldSubDelim = line[104];
var recordDelimiter = line[105];
var fields = line.Split(fieldDelimiter);
var yourField = fields[7];
如果需要,這還允許您以類似的方式對其他記錄進行排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.