Şimdi Ara

Regex kullanımı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
7
Cevap
0
Favori
294
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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








  • 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ı >
  • 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]

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

  • Kod

    Yığını:
    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.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.