1

我对一些字符串清理的正则表达式有一些问题......


我想:

1) 如果第一个字符是西里尔文 => 删除所有字符,直到字符串中的第一个数字或拉丁字符
2) 如果第一个字符是拉丁文 => 保存字符直到字符串中的第一个西里尔字符

我有模式的部分:

$pattern = '/[(\s)(a-zA-Z0-9)(\№)(\_)(\-)(\.)(\/)(\s)(\,)(\' )(\")(\*))^(\(\))]*\s/u';

但是对于第二部分,如果拉丁字符的位置是输入字符串的中间,我什么都没有输出......

有人可以帮我编辑正则表达式吗?

谢谢


例如($in[必须在结果中]):


foreach($in as $item){    
    $matches = array();    
    $result = preg_match ($pattern, $item, $matches);    
    print_r($matches);    
} 

$in = array();    
$in[RZL 200 -200] = 'RZL 200 -200 литров, Накопительный электроводонагреватель';    
$in[EKH 50U-] = 'EKH 50U-Вертикальный электроводонагреватель 50 литров';    
$in[EKF 70U,] = 'EKF 70U, Суперплоский электрический водонагреватель -70 литров, Глубина=320 мм';    
$in[FF06 1/2"AA] = 'FF06 1/2"AA фильтр механической очистки ,на холодную воду.';    
$in[FF06 1"AA,] = 'FF06 1"AA, фильтр механической очистки на холодную воду.';    
$in[F76 S 1/2" AA (AB, AC, AD),] = 'F76 S 1/2" AA (AB, AC, AD), фильтр механической очистки , на холодную воду';    
$in[ProfiRoll-2000, 13,3-18,2, 2000] = 'ProfiRoll-2000, 13,3-18,2, 2000 Вт, Телый пол в цементно-песчаную стяжку';    
$in[ProfiMat 160-2,0] = 'ProfiMat 160-2,0 кв.м, 0,320 Вт';    
$in[№203 ,] = 'Набор №203 , Набор фильтрэлементов №203(A560,A-560E,Em,Ecp,A-575E,Em,Ecp)';    
$in[A-575Ep box MAX,] = 'A-575Ep box MAX, Система обратного осмоса, 5 ступеней очистки со встроенным баком, насосом повышения давления и индикатором качества воды, 380 л/сутки (Россия)';    
$in[1500 (] = 'Емкость из ПЭ 1500 (ЕЭЦ1500) л, цилиндрическая вертикальная для питьевой воды';    
$in[HLA-12R-B] = 'Алюминиевый радиатор HLA-12R-B';    
$in[SLH 25/L30 ST] = 'Система обогрева трубопроводов SLH 25/L30 ST';    
$in[FFH 400/12,0] = 'Нагревательный мат FFH 400/12,0';    
$in[AF11S-1A,B,С,D,E,F.] = 'AF11S-1A,B,С,D,E,F.Запасная сетка для F76S,СS,FK76CS и HS10S (от 1/2" до 11/4"), 100,20,50,200,300,500микрон';
$in[A-11 BE (BIG BLUE 10)] = 'Фильтр A-11 BE (BIG BLUE 10) В сборе с кронштейном,ключом и фильтрующим элементом,1 ступень очистки (механическая)';    
$in["TROPIX"] = 'Комплект "TROPIX" МНН-130-1 (1 кв. метр)';
4

1 回答 1

1

你也许可以使用这个正则表达式:

^[^A-Z0-9№_,\/'"*().-]*\s*([A-Z0-9№_,\/'"*(). -]+)

它匹配字符串开头的任意数量的非拉丁字符,并在紧随其后看到一个(或多个)时捕获任何拉丁字符。

正则表达式 101 演示

С请注意,该模式检测到一些西里尔字母。

于 2013-08-21T17:01:12.380 回答