Какое регулярное выражение будет соответствовать шаблону или будет пустым?

Ниже я предоставил три файла MainActivity.java для запуска службы. Второй файл MyService.java, предоставляющий службу в течение 5 минут и третьих, является файлом манифеста.

MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startService(new Intent(this, MyService.class)); //start service which is MyService.java
    }
}

MyService.java

 public class MyService extends Service {

    public static final int notify = 300000;  //interval between two services(Here Service run every 5 Minute)
    private Handler mHandler = new Handler();   //run on another Thread to avoid crash
    private Timer mTimer = null;    //timer handling

    @Override
    public IBinder onBind(Intent intent) {
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public void onCreate() {
        if (mTimer != null) // Cancel if already existed
            mTimer.cancel();
        else
            mTimer = new Timer();   //recreate new
        mTimer.scheduleAtFixedRate(new TimeDisplay(), 0, notify);   //Schedule task
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mTimer.cancel();    //For Cancel Timer
        Toast.makeText(this, "Service is Destroyed", Toast.LENGTH_SHORT).show();
    }

    //class TimeDisplay for handling task
    class TimeDisplay extends TimerTask {
        @Override
        public void run() {
            // run on another thread
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    // display toast
                    Toast.makeText(MyService.this, "Service is running", Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
}

AndroidManifest.xml

  <service android:name=".MyService" android:enabled="true" android:exported="true"></service>
13
задан T Zengerink 27 July 2012 в 09:50
поделиться

3 ответа

Перенести весь regex в parens и поместить a? в конце:

(\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}/x)?
30
ответ дан 1 December 2019 в 19:50
поделиться

Попытайтесь перенести свой regex с (?:<your_regex>)?.

2
ответ дан 1 December 2019 в 19:50
поделиться

Попробуйте это:

@"^(?:(\()?\d{3}(?(1)\)|[-\s.])\d{3}[-\s.]\d{4})?$"

(?(1)\)|[-\s.]) часть является условной конструкцией. Это говорит, "Если было' (' вначале (который мы знаем, потому что группа № 1 соответствовала чему-то), соответствие')', здесь; иначе соответствуйте дефису, пробелу или точке". И обертывание всего этого в (?:...)? позволяет этому соответствовать пустой строке, как сказал Kevin; если это не работало на Вас, Вы, должно быть, положили не на место один из parens (или возможно одну из обратных косых черт).

Я добавил ^ и $ привязки для тестирования; в элементе управления проверки правильности они не должны быть необходимы.

1
ответ дан 1 December 2019 в 19:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: