الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال فى ال Regular Expressions

بدأه NarutoMan في 27 أبريل 2011 · 7 رد · 669 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد التعديل فى هذا الكود بحيث عند البحث عن كلمة java و هذه الجملة

java javanaruto narutojavaman naruto java

تكون النتيجة هى :

narutojava, narutojavaman, javanaruto


import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexTestHarness {

public static void main(String[] args){
Console console = System.console();
if (console == null) {
System.err.println("No console.");
System.exit(1);
}
while (true) {

Pattern pattern =
Pattern.compile(console.readLine("%nEnter your regex: "));

Matcher matcher =
pattern.matcher(console.readLine("Enter input string to search: "));

boolean found = false;
while (matcher.find()) {
console.format("I found the text \"%s\" starting at " +
"index %d and ending at index %d.%n",
matcher.group(), matcher.start(), matcher.end());
found = true;
}
if(!found){
console.format("No match found.%n");
}
}
}
}
import java.io.Console;

اى اريد استخراج كلمة java فقط اذا كانت مرتبطة بكلمة اخرى

عن طريق استخدام الegular Expressions

وهذا هو ملف الكود

v

v

v

RegexTestHarness.java

تم تعديل هذه المشاركة بواسطة NarutoMan في 27 أبريل 2011 في 23:49

#2
اقتباس
اى اريد استخراج كلمة java فقط اذا كانت مرتبطة بكلمة اخرى

الحقيقه أنا لا أعرف regex .. لكن ربما هذا ال pattern يفى بالغرض:

java[^\\s]

تم تعديل هذه المشاركة بواسطة هويدي في 28 أبريل 2011 في 11:32

#3
هويدي كتب:

الحقيقه أنا لا أعرف regex .. لكن ربما هذا ال pattern يفى بالغرض:

java[^\\s]

شكرا على الاجابة ولكن هذا سوف يقوم باستخراج الكلمة متبوعة باى شئ غير الفراغ

اى سوف تستخرج : javanaruto, narutojavaman فقط

وانا اريد ان تكون مسبوقة بكلمة او متبوعة بكلمة او الاثنين معا (اى مرتبطة بكلمة اخرى)

#4

اعتقد انها تفي بالغرض

"(^[a-z]+[Jj][aA][vV][aA])|(^[a-z]+[Jj][aA][vV][aA][a-z]+$)|([Jj][aA][vV][aA][a-z]+$)"

تم تعديل هذه المشاركة بواسطة pro.fahd في 28 أبريل 2011 في 15:40

albert_einstein.jpg

Untitled-AE.jpg
#5

جرب ال pattern التالي

\\w+java\\w*|\\w*java\\w+

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class NewClass {

	public static void main(String[] args) {

		String stringPattern = "\\w+java\\w*|\\w*java\\w+";
		String str = "java javanaruto narutojavaman narutojava";
		Pattern pattern = Pattern.compile(stringPattern, Pattern.CASE_INSENSITIVE);
		Matcher matcher = pattern.matcher(str);
		while (matcher.find()) {
			System.out.println(matcher.group());
		}
	}
}
1
#6

شكرا لك يا herch و انت يا pro.fahd

ولكن ماذا لو اردت من المستخدم ان يدخل كلمة وان انتقى هذة الكلمة اذا كانت مقرونة بكلمة اخرى

اى انا لا اعلم الكلمة نفسها (على عكس المثال السابق اعلم انى ابحث عن كلمة java )

كأن ابحث عن كلمة فى ملف

كيف اقوم بعمل ذلك هل اقوم بعمل كذا Pattern ام ماذا ؟؟؟

تم تعديل هذه المشاركة بواسطة NarutoMan في 28 أبريل 2011 في 21:43

#7
		Scanner sc = new Scanner(System.in);
		System.out.println("The word : ");
		String word = sc.nextLine();
		String stringPattern = "\\w+"+word+"\\w*|\\w*"+word+"\\w+";
		String str = "java javanaruto narutojavaman narutojava";
		Pattern pattern = Pattern.compile(stringPattern, Pattern.CASE_INSENSITIVE);
		Matcher matcher = pattern.matcher(str);
		while (matcher.find()) {
			System.out.println(matcher.group());
		}

تم تعديل هذه المشاركة بواسطة herch في 28 أبريل 2011 في 22:28

2
#8

أسف انى اتأخرت فى الرد فقد كنت اعمل setup للاوبونتو الجديدة

على العموم شكرا جزيلا لكل من رد على هذا الموضوع

herch كتب:

		Scanner sc = new Scanner(System.in);
		System.out.println("The word : ");
		String word = sc.nextLine();
		String stringPattern = "\\w+"+word+"\\w*|\\w*"+word+"\\w+";
		String str = "java javanaruto narutojavaman narutojava";
		Pattern pattern = Pattern.compile(stringPattern, Pattern.CASE_INSENSITIVE);
		Matcher matcher = pattern.matcher(str);
		while (matcher.find()) {
			System.out.println(matcher.group());
		}

هو دة تقريبا اللى كنت محتج له جميل انى سألت هنا

مواضيع مشابهة