Есть набор строк:
355 | 45 | fgfg | 344 | dd | 868 | 86 | 46 | dg | Как вырезать что между 
Писал:
(?:(
[0-9]{1,4}<\\/td>){1,4})(?: | )([\\S]{1,4})(?:<\\/B><\\/td>) что то не получается
  Как задавать сложные условия выбора например как сказать на языке рэгов: может идти  или  Можна ли создавать варианты очень большие по обьему?
							
						
						
							
								« Последнее редактирование: 28 Марта 2004, 11:06:57 от Yukko »
							 
							
								 
								Записан
							  
							ffg 
						 
					
					
				
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #1 : 27 Марта 2004, 15:41:44 » 
									
								 
							 
							
								Bardel: Как вырезать что между  / ([^<>]+?)/  
							 
						 
						
							
							 
							
								 
								Записан
							  
							First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette ) 
						 
					 
					
				 
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #2 : 28 Марта 2004, 11:02:37 » 
									
								 
							 
							
								Макс  Если ты ограничиваешь РВ слешами, то наверное, слеш внутри надо проескейпить: <\\/b> иначе нарвешься на предупреждение:
 Warning: Unknown modifier \'b\' in ... и вопросительный знак после плюса абсолютно лишний! Посмотри сам на РВ и поймешь почему. 
							 
						 
						
							
							 
							
								 
								Записан
							  
							работа в Украине 
						 
					 
					
				 
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #3 : 28 Марта 2004, 11:06:43 » 
									
								 
							 
							
								Bardel и другие отключайте пожалуйста смайлики в форме отправки сообщения, чтобы люди не гадали, что там написано... 
							 
						 
						
							
							 
							
								 
								Записан
							  
							работа в Украине 
						 
					 
					
				 
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #4 : 30 Марта 2004, 10:15:30 » 
									
								 
							 
							
								Извините, я кажется не совсем правильно сформулировал задачу: строки такого типа: | Эта инфа мне нужна | И эта инфа мне ужна | Нет355 | Нет45 | Да fgfg |  | Эта инфа мне нужна | И эта инфа мне ужна | Нет344 | Да dd |  | Эта инфа мне нужна | И эта инфа мне ужна | НЕТ868 | НЕТ86 | НЕТ46 | Да dg |  Писал: /(?: | )(([\\S\\s]{1,20})(?:<\\/td> | )([\\S\\s]{1,20})(?:<\\/td>)(?  | [0-9]{1,3}<\\/td>){1,4})(?: | )([\\S]{1,4})(?:<\\/B><\\/td>)
  В итоге я должен получить такие строки: Эта инфа мне нужна     И эта инфа мне ужна    Да fgfg Эта инфа мне нужна     И эта инфа мне ужна    Да dd Эта инфа мне нужна     И эта инфа мне ужна    Да dg
  Тоесть - /([^<>]+?)/ это не совсем то что надо.  В моей ситуации тэгов  | Нет | , может быть от одного до 5, тоесть не подойдет и такой  такой  код :  ...то что мне надо...(?:[\\s\\S]{1,30})(?: | )([\\S]{1,4}).........
							
						
						
							
							 
							
								 
								Записан
							  
							ffg 
						 
					
					
				
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #5 : 30 Марта 2004, 10:48:59 » 
									
								 
							 
							
								Bardel ты бы сформулировал нормально задачу, чтобы можно было что-то понять. ты дай это кому-то прочитать, если это кто-то поймет, то он герой! 
							 
						 
						
							
							 
							
								 
								Записан
							  
							Не ходите, дети, без «Мозиллы» дальше localhost! 
						 
					 
					
				 
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #6 : 30 Марта 2004, 11:33:26 » 
									
								 
							 
							
								Bardel: то что мне надо...(?:[\\s\\S]{1,30})(?: )([\\S]{1,4})......... т.е. ты уже свою задачу решил?
							
						
						
							
							 
							
								 
								Записан
							  
							работа в Украине 
						 
					
					
				
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #7 : 30 Марта 2004, 15:46:42 » 
									
								 
							 
							
								Bardel, ты лучше расскажи зачем тебе это делать? это куда интереснее. 
							 
						 
						
							
							 
							
								 
								Записан
							  
							Не ходите, дети, без «Мозиллы» дальше localhost! 
						 
					 
					
				 
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #8 : 31 Марта 2004, 10:25:22 » 
									
								 
							 
							
								Давайте я екще раз опишу задачу: есть файл с таблицами 3х типов(4 ячейки, 6ячеек, 8 ячеек) нужно вырезать первые 2 ячейки и последнюю. Как это сделать 1 регулярным выражением Ниже привожу таблицы: Таблица1: Таблица2: 
 
 Pole1 | Pole2 | Pole3 | Pole4 | Pole5 | Pole6 | 
  
 
 Таблица3: 
 
 Pole1 | Pole2 | Pole3 | Pole4 | Pole5 | Pole6 | Pole7 | Pole8 | 
  
 
 Все ячейки могут содержать как символы так и цифры. Вот такая задача Bardel, ты лучше расскажи зачем тебе это делать? это куда интереснее. Я хочу вырезать всю информацию по букмекерской линии сайта zebrabet.com(коэфициенты)  
							 
						 
						
							
							 
							
								 
								Записан
							  
							ffg 
						 
					 
					
				 
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #9 : 31 Марта 2004, 11:54:02 » 
									
								 
							 
							
								Bardel: Как это сделать 1 регулярным выражением Попробуй сделать это сначана тремя выражениями, а потом будешь оптимизировать.  
							 
						 
						
							
							 
							
								 
								Записан
							  
							Не ходите, дети, без «Мозиллы» дальше localhost! 
						 
					 
					
				 
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #10 : 31 Марта 2004, 14:55:02 » 
									
								 
							 
							
								Попробуй сделать это сначана тремя выражениями, а потом будешь оптимизировать. Это я знаю  1. /(?: | )([\\S]{1,4})(?:\\/td> | )([\\S]{1,4})(?:[\\S\\s]{1,20} | )([\\S]{1,4})(?:<\\/B><\\td><\\tr>)/
  2. /(?:| )([\\S]{1,4})(?:\\/td> | )([\\S]{1,4})(?:[\\S\\s]{1,40} | )([\\S]{1,4})(?:<\\/B><\\td><\\tr>)/
  3. /(?:| )([\\S]{1,4})(?:\\/td> | )([\\S]{1,4})(?:[\\S\\s]{1,60} | )([\\S]{1,4})(?:<\\/B><\\td><\\tr>)/
  Какк эти з выражения заменить одним?
							
						
						
							
							 
							
								 
								Записан
							  
							ffg 
						 
					
					
				
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #11 : 31 Марта 2004, 15:24:47 » 
									
								 
							 
							
								Тоесть по сути можна обойтись и 3 вариантом, но как сделать по другому чтобы конкретно не привязываться к [\\S\\s]{1,60}. Меня интерисует именно это 
							 
						 
						
							
							 
							
								 
								Записан
							  
							ffg 
						 
					 
					
				 
				 
				
				
					
					
						
						
							
								
									
									
									« Ответ #12 : 31 Марта 2004, 16:19:28 » 
									
								 
							 
							
								Вариант решения на Perl...
 $s= "| Pole1 | Pole2 | Pole3 | Pole4 | Pole5 | Pole6 | Pole7 | Pole8 | ";
  @ar = $s =~ m!(?:)?(\\S+?)(?:)? | !ig;
  #результат $,=" "; print @ar[0,1,-1];
  
							 
						 
						
							
							 
							
								 
								Записан
							  
							[ основной браузер когда-то был, теперь попробуй разберись =] 
						 
					 
					
				 
				 
				
			
			
			
	
			
			  
		 
				
				
			
		
	
	
 |   |   |       |       |       |  
  |