سؤال

أرغب في تحديد محدد للماسح الضوئي الذي ينقسم على بعض الأنماط ، ولكن لا يزيل هذا النمط من الرموز. لا يبدو لي أن أقوم بهذا العمل ، حيث يتم تناول أي شيء تم تحديده بواسطة Regex كجزء من المحدد. أي اقتراحات؟

مشكلتي المحددة ، لدي ملف يشبه:

text/numbers mix
numbers
numbers
text/numbers mix
numbers
numbers
numbers
.
.

أرغب في الانقسام من النصوص/الأرقام المزيج+صفوف حتى يختلط النص/الأرقام التالية. لديّ regex للتعرف عليهم ، ولكن كما ذكر ، باستخدام ذلك ، يأكل المحدد جزءًا مما أريد.

تحرير: إضافة رمز:

static final String labelRegex="\\s*[^01\\s*]\\w+\\s*";
static final Pattern labelPattern = Pattern.compile(labelRegex, Pattern.MULTILINE);

هو النمط الذي استخدمته لتحديد بت النص/الأرقام (أعرف أن صفوف الأرقام الخاصة بي تحتوي على جميع 1/0S مفصولة بالمسافات).

عندما أقوم بتهيئة الماسح الضوئي:

stateScan = new Scanner(new BufferedReader(new FileReader(source)));
stateScan.useDelimiter(labelPattern);

التي تأكل الملصقات ، وتترك الصفوف فقط. لدي حاليًا تطبيق عمل يبدأ ماسحات ضوئية على قراء ملفات مخزنة من نفس المصدر ، أحدهما تقسيم من قبل الدول والآخر حسب العلامات. أود حقًا أن تكون مجرد علامة واحدة للاستيلاء+.

هل كانت مفيدة؟

المحلول

يمكنك استخدام نظرة إيجابية إلى الأمام في regex الخاص بك. لا يتم تضمين المضي قدمًا (والخلف) في المباراة ، لذلك لن يتم "تناولها" بواسطة الماسح الضوئي. من المحتمل أن تفعل هذا Regex ما تريد:

(?=text/numbers)

سيكون المحدد السلسلة الفارغة قبل الشريط الفرعي مباشرة text/numbers.

هذا عرض تجريبي صغير:

public class Main {
    public static void main(String[] args) {
        String text = "text/numbers mix\n"+
                "numbers\n"+
                "numbers\n"+
                "text/numbers mix\n"+
                "numbers\n"+
                "numbers\n"+
                "numbers";
        String regex = "(?=text/numbers)";
        Scanner scan = new Scanner(text).useDelimiter(regex);
        while(scan.hasNext()) {
            System.out.println("------------------------");
            System.out.println(">"+scan.next().trim()+"<");
        }
    }
}

الذي ينتج:

------------------------
>text/numbers mix
numbers
numbers<
------------------------
>text/numbers mix
numbers
numbers
numbers<
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top