Regex к первому вхождению только?

Скажем, у меня есть следующая строка:

это - тест ради тестирования. это - только тест. Конец.

и я хочу выбрать this is a test и this is only a test. Что в мире я должен сделать?

Следующий Regex, который я попробовал, приводит к глупому результату:

this(.*)test (Я также хотел получить то, что было между ним),

возвраты this is a test for the sake of testing. this is only a test

Кажется, что это - вероятно, что-то легкое, которое я забываю.

10
задан Cœur 30 January 2019 в 03:50
поделиться

3 ответа

Еще одно решение:

  • нет панели инструментов, кроме сегментированного элемента управления (eyecandy)

     UIAcureSheet * actionSheet = [[UIAcitySheet alloc] initWeyTitle: nil
    делегат: ноль
    cancelButityTitle: ноль
    destructiveButtonTitle:nil
    otherButityTitle: ноль];
    
    [actionSheet setActionSheetStyle: UIAcateSheetStyleBlackTranslucent];
    
    CGRect picterFrame = CGRectMake (0, 40, 0, 0);
    
    UIPicureView * picterView = [[UIPicureView alloc] initWeyFrame: picterFrame];
    picterView.showsSeliceIndicator = YES;
    picterView.dateSource = self;
    picterView.delegate = self;
    
    [actionSheet addSubview: выбор вида];
    [выбор Деблокирование вида];
    
    UISegingControl * closeButton = [[UISegingControl alloc] initWityItems: [NSAray arrayWityObject: @ «Close»]];
    closeButton.momentary = YES;
    closeButton.frame = CGRectMake (260, 7.0f, 50.0f, 30.0f);
    closeButton.segsControlStyle = UISegsControlStyleBar;
    closeButton.tintColor = [UIColor blackColor];
    [closeButton addTarget: self action: @ selector (dismissActionSheet:) forControlEvents: UIControlEventStartChanged];
    [actionSheet addSubview: closeButton];
    [closeButton release];
    
    [actionSheet sunInView: [[UIApplication sharedApplication] keyWindow]];
    
    [actionSheet setBounds: CGRectMake (0, 0, 320, 485)];
    
-121--2038226-

В нашей компании jsp загружает объект конфигурации, созданный сервером на основе роли текущего пользователя. Клиентская сторона затем выполняет рендеринг в соответствии с этой конфигурацией.

Это правда, что он может быть взломан, так что первоначальный объект делает вид, что имеет больше прав, чем на самом деле; однако хакер получит нарушение безопасности на сервере при попытке сделать то, что ему не разрешено. Итак, логика клиентской стороны, которая применяет безопасность, только для пользы пользователя, поэтому он не видит больше, чем может. Проверка на стороне сервера (когда запрашивается действие) - это то, что фактически обеспечивает безопасность.

-121--2475449-

Регекс жадный, что означает, что он захватит как можно больше символов, попадающих в . * совпадений. Чтобы сделать его нежадным, попробуйте:

этот (. *?) тест

Модификатор ? позволит захватить как можно меньше символов в совпадении.

26
ответ дан 3 December 2019 в 13:54
поделиться

* - жадный квантификатор. Это означает, что он совпадает с максимально возможным, то есть то, что вы видите. В зависимости от конкретной языковой поддержки для Regex вам нужно будет найти не жадный квантификатор. Обычно это трейлинг вопросительный знак, как это: *? . Это означает, что он прекратит потребляющие буквы, как только остальное регельс может быть удовлетворен.

Здесь хорошее объяснение жадности здесь.

3
ответ дан 3 December 2019 в 13:54
поделиться

Andy E и IPSQuiggle имеют правильную идею, но я хочу указать, что вы можете добавить слово на границу, то есть вы не хотите иметь дело со словами, которые имеют «этот» или «тест» в них - Только слова сами по себе. В Perl и похоже, что сделано с маркером «\ b».

Как это такое, Это (. *?) Тест будет соответствовать бы «Thistles - самые большие», которые вы, вероятно, не хотите.

Узор, который вы хотите, это что-то вроде этого: \ bthis \ b (. *?) \ Btest \ b

9
ответ дан 3 December 2019 в 13:54
поделиться
Другие вопросы по тегам:

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