Какой Perl regex может распознать слова CamelCase?

Вы можете использовать метод ChangeDetectorRef, detectChanges.

import { Component, OnInit, Input, ChangeDetectorRef } from '@angular/core';


declare var $:any;

@Component({
  selector: 'section-slider',
  templateUrl: './section-carousel.component.html',
  styleUrls: ['./section-carousel.component.css']
})
export class SectionCarouselComponent implements OnInit {
@Input () type:any;

view_1600:number;
view_1200:number;
view_1024:number;
view_768:number;
view_375:number;




  constructor(private cd: ChangeDetectorRef) {

   }
   ngAfterViewInit() {

    //Difference in Slides
    switch(this.type)
    {
      case '1':
      {
        this.view_1600 = 7;
        this.view_1200 = 5;
        this.view_1024 = 5;
        this.view_768 = 3;
        this.view_375 = 1;
        break;

      }
      case '2':
      {
        this.view_1600 = 5;
        this.view_1024 = 4;
        this.view_1200 = 4;
        this.view_768 = 4;
        this.view_375 = 1;
        break;

      }
      case '3':
      {
        this.view_1600 = 5;
        this.view_1024 = 4;
        this.view_1200 = 4;
        this.view_768 = 4;
        this.view_375 = 1;
        break;

      }
      default:
      {
        this.view_1600 = 3;
        this.view_1024 = 4;
        this.view_1200 = 4;
        this.view_768 = 4;
        this.view_375 = 1;

      }



    }


     console.log(this.view_1600);

    //Carousel code
    $('.owl-carousel').owlCarousel({
      loop:true,
      dots: false,
      margin:5,
      nav:true,
      navText: [
        '<i class="fa fa-angle-left" aria-hidden="true"></i>',
        '<i class="fa fa-angle-right" aria-hidden="true"></i>'
    ],
      responsive:{
          0:{
              items:1
          },
          375:{
              items:this.view_375
          },
          768:{
              items:this.view_768
          },
         1024:{
            items:this.view_1024
          },
         1200:{
          items:this.view_1200
          },
         1600:{
          items:this.view_1600
          },

      }
  });
  this.cd.detectChanges()
}


  ngOnInit() {



  }
}
10
задан brian d foy 2 May 2009 в 22:50
поделиться

4 ответа

I think you want something like this, written with the /x flag to add comments and insignificant whitespace:

/
   \b      # word boundary so you don't start in the middle of a word

   (          # open grouping
      [A-Z]      # initial uppercase
      [a-z]*     # any number of lowercase letters
   )          # end grouping

   {2,}    # quantifier: at least 2 instances, unbounded max  

   \b      # word boundary
/x

If you want it without the fancy formatting, just remove the whitespace and comments:

/\b([A-Z][a-z]*){2,}\b/

As j_random_hacker points out, this is a bit simple since it will match a word that is just consecutive capital letters. His solution, which I've expanded with /x to show some detail, ensures at least one lowercase letter:

/
    \b          # start at word boundary
    [A-Z]       # start with upper
    [a-zA-Z]*   # followed by any alpha

    (?:  # non-capturing grouping for alternation precedence
       [a-z][a-zA-Z]*[A-Z]   # next bit is lower, any zero or more, ending with upper
          |                     # or 
       [A-Z][a-zA-Z]*[a-z]   # next bit is upper, any zero or more, ending with lower
    )

    [a-zA-Z]*   # anything that's left
    \b          # end at word 
/x

If you want it without the fancy formatting, just remove the whitespace and comments:

/\b[A-Z][a-zA-Z]*(?:[a-z][a-zA-Z]*[A-Z]|[A-Z][a-zA-Z]*[a-z])[a-zA-Z]*\b/

I explain all of these features in Learning Perl.

21
ответ дан 3 December 2019 в 14:35
поделиться

Ответы Брайана и Шарта также будут сообщать слова, состоящие полностью из заглавных букв (например, FOO ). Это может или не может быть то, что вы хотите. Если вы хотите ограничиться только верблюжьими словами, которые содержат хотя бы одну строчную букву, используйте:

/\b[A-Z][a-zA-Z]*[a-z][a-zA-Z]*\b/

Если дополнительно вы хотите исключить слова, состоящие из одной заглавной буквы, за которой следует любое количество строчных букв (например, Perl ), используйте:

/\b[A-Z][a-zA-Z]*(?:[a-z][a-zA-Z]*[A-Z]|[A-Z][a-zA-Z]*[a-z])[a-zA-Z]*\b/

(В основном, мы требуем, чтобы строка начиналась с заглавной буквы и содержала хотя бы одну дополнительную заглавную букву и одну строчную букву; эти последние два могут появляться в любом порядке.)

5
ответ дан 3 December 2019 в 14:35
поделиться

Предполагая, что вы не используете регулярное выражение для извлечения, а просто сопоставляете ...

[A-Z][a-zA-Z]*

Разве не единственное реальное требование, чтобы все буквы начинались с заглавной буквы?

7
ответ дан 3 December 2019 в 14:35
поделиться

Как насчет этого: / \ b [AZ] ([az] + [AZ]?) * \ B / ??

0
ответ дан 3 December 2019 в 14:35
поделиться
Другие вопросы по тегам:

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