Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
412
Tıklama
0
Öne Çıkarma
Regex kullanımı
S
3 yıl
Çavuş
Konu Sahibi

Merhaba, umarım iyisinizdir. Basit matematik işlemlerinin olduğu bir sınıf var bunu cmdden parametre olarak gönderip string olarak okuyorum. Böylece satırlarına erişebililiyorum. Operatorleri tipine göre ayırıp onların sayımını yapmam gerekiyor fakat regexte sorun yaşıyorum. Çok fazla regex kodu denememe rağmen halledemedim ve kafayı yemek üzereyim.
regex "+" = hata veriyor. Kaçış ifadesi istiyor.
regex "\+" = hata veriyor yine kaçış ifadesi istiyor neden anlamadım.
regex "\\+" = Çalışıyor ama bütün + ları buluyor. + ve ++ bunlar farklı tür operatörler ve birbirinden ayrı saymam gerekiyorr.
Dediğim gibi regex üzerinde çalıştım fakat uygun bir şey bulamadım.
     
  Benim main fonksiyon kodlarım =

 public static long tekliFonk(String line, String x)
  {
    Matcher matcher = Pattern.compile(String.valueOf(x)).matcher(line);
    int res = 0;
    while (matcher.find()) {
      res++;
    }
    return res;
  }
  

public static void main(String[] args) throws IOException
  {
 
int tekli=0;

String file= (args[0]);
FileReader fReader = new FileReader(file);
String line;
BufferedReader bReader=new BufferedReader(fReader);
while((line = bReader.readLine())!=null) {
tekli +=tekliFonk(line,"\\+");
}

Ayrıştırmaya çalıştığım kod bloğu =  

   
  public class Lexicel {
  public int x;
public int y;
public Lexicel(int x,int y) {
this.x = x;
this.y = y;
}
/*
*
* x*x + y*y // i�lemi x > 0 ve y > 0
*/
public int x2y2() {
return x * x + y * y;
}
/*
* Karak�k i�lemi yapan fonksiyon
* karakok(x*x + y*y)
*/
public double karakok() {
return Math.sqrt((double)x2y2());
}
// log2(x/++y)
public double log2() {
++y;
return Math.log(((double)x)/y);
}
@Override
public boolean equals(Object obj) {
if(obj != null && obj instanceof Lexicel) {
return ((Lexicel)obj).x == this.x && ((Lexicel)obj).y == this.y;
}
return false;
  }

Çıkış ekranı şöyle olmalı =
Operatör bilgisi = Tekli operator = 1
İkili Op. = 6
Sayısal Op. = 7
İkişkisel Op. = 3
Mantıksal Op. = 2
Operand bilgisi :
Toplam operand sayısı: 23;


yaşadığım regex problemini çözebilirsek devamını ben yazabilirim.
Teşekkürler

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



T
3 yıl
Yarbay

Mac'te TextMate adlı editörde , bir yazı üzerinde regex deyimi ile arama yapabiliyorsun. Böylelikle regex doğru çalışana dek deneyip düzeltebiliyorsun. Mac kullanmıyorsan internette aynı işi yapan siteler var. Bir de Windows'ta TextMate'in klonu denilen Sumblime Text var ancak bendeki Windows'ta kurulu Sublime Text'i açıp baktım, bulamadım ancak Mac'te kesin var, kullandım.



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
S
3 yıl
Çavuş
Konu Sahibi

Fazlaca amele usulü çok uzun regex kodlarıyla bu işi hallettim sayılır. Bunun daha kısa yolu yokmudur? Mesela bir bölme / operatörü için yazdığım regex kodu :
[xy]\\/|( )\\/( )|\\/[xy]



S
3 yıl
Çavuş
Konu Sahibi

Ve tam olarak benim çözümlemeye çalıştığım kodlara uygun operand bilgisini nasıl alabileceğim mantığını yürütemedim.




Bu mesajda bahsedilenler: @vonderplanitz
S
3 yıl
Çavuş
Konu Sahibi

Vaaoovv!! Bir günde regex kodlamada harika işler çıkardım. Şimdi problemim ise büyük problemim şudur = Tekli ikili ve sayısal operatör nedir ? +
++
-
--
*
/
%
&
|
^
=
+=
-=
/=
*=
%=
&=
|=
^=
bunları ayırmam gerekiyor.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.