1Danke
ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
8257
8257
EMPFEHLEN
-
29.11.05 10:14 #1
Hi,
ich habe eine Liste von Wörtern und eine Suchfunktion der ich den gewünschten Suchbegriff übergebe.
Ich habe mir gedacht dass ich die Wörter mit einer Regular Expression prüfe und dann seperat speichere.
Beispiel: in der Liste ist das Wort "regular expression" und meiner Suchbegriff lautet "reg", wie bekomme ich dann alle Wörter die "reg" enthalten?
Gruß
Xen
-
Ich würde mal sagen, alle Zeichenketten die folgendes Muster besitzen:
1: " " (Leerzeichen)
*: a,b,c...XYZ
1: "reg"
*: a,b,c...XYZ
1: " " (Leerzeichen)
Zusammen basteln darfste selbst.
Wobei da noch nicht der Fall drin ist, dass bspw. ein Komma oder ein Satzpunkt genau nach einem Wort kommt ..:-) möp
-
Also ich würde sagen es kommt darauf an wie "gut" deine Suchfunktion werden soll. Wenn du z.B. nur Wörter suchen möchtest die mit dem gewünschten Suchbegriff anfangen, würde ich dir eher raten mit dem StringTokenizer die Wörter zu spliten und dann mit startsWith(String serach) zu arbeiten, wenn du natürlich auch die Char Reihenfolge "reg" in der Mitte des Wortes finden möchtest kommst du nicht mehr um RegEX herum...
mfg
elmato
-
29.11.05 16:51 #4
Ich habe nun einen Teil der Lösung:
Code :1 2 3 4 5 6 7
pattern = Pattern.compile( suchbegriff, Pattern.CASE_INSENSITIVE ); matcher = pattern.matcher( text ); if ( matcher.lookingAt() ) { // text gefunden }
Nun habe ich nurnoch ein Problem, er sucht nur zu Beginn des Textes und nicht mitten im Text. Hat jemand ne Idee?
Gruß
Xen
-
29.11.05 21:41 #5
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Schau mal hier:
Beispiel zum Filtern von Daten einer JList.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
/** * */ package de.tutorials; import java.awt.BorderLayout; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.text.MessageFormat; import javax.swing.AbstractListModel; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JTextField; import javax.swing.ListModel; /** * @author Tom * */ public class WordFilterExample extends JFrame { JTextField textField; FilterableJList list; final static String DEFAULT_FILTER = "^#.*"; public WordFilterExample() { super("WordFilterExample"); setDefaultCloseOperation(EXIT_ON_CLOSE); textField = new JTextField(20); textField.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) { list .setFilter(DEFAULT_FILTER.replace("#", textField .getText())); list.updateUI(); } }); list = new FilterableJList(createDummyData()); add(textField, BorderLayout.NORTH); add(list, BorderLayout.CENTER); pack(); setVisible(true); } private Object[] createDummyData() { return new Object[] { "a", "b", "ba", "bac", "bbc", "c" }; } /** * @param args */ public static void main(String[] args) { new WordFilterExample(); } class FilterableJList extends JList { String filter; FilteredListModel filteredListModel; int currentFilterMatches; int[] currentFilterMapping; String TOOLTIP_MESSAGE = "{0} Items filtered out of {1}"; public FilterableJList(Object[] data) { super(data); filteredListModel = new FilteredListModel(super.getModel(), null); } public String getFilter() { return filter; } public void setFilter(String filter) { this.filter = filter; } private void doFilter() { ListModel model = super.getModel(); int modelSize = model.getSize(); int[] tmpMapping = new int[modelSize]; currentFilterMatches = 0; for (int i = 0; i < modelSize; i++) { if (model.getElementAt(i).toString().matches(this.filter)) { tmpMapping[currentFilterMatches++] = i; } } currentFilterMapping = new int[currentFilterMatches]; System.arraycopy(tmpMapping, 0, currentFilterMapping, 0, currentFilterMatches); filteredListModel.setFilterMapping(currentFilterMapping); } public ListModel getModel() { if (filter == null || filter.equals("")) { setToolTipText(""); return super.getModel(); } else { doFilter(); setToolTipText(MessageFormat.format(TOOLTIP_MESSAGE, new Object[] { Integer.valueOf(currentFilterMatches), Integer.valueOf(super.getModel().getSize()) })); return filteredListModel; } } } class FilteredListModel extends AbstractListModel { ListModel delegate; int[] filterMapping; public FilteredListModel(ListModel delegate, int[] filterMapping) { this.delegate = delegate; this.filterMapping = filterMapping; } public int getSize() { return this.filterMapping != null ? this.filterMapping.length : 0; } public Object getElementAt(int index) { return delegate.getElementAt(filterMapping[index]); } public ListModel getDelegate() { return delegate; } public void setDelegate(ListModel delegate) { this.delegate = delegate; } public int[] getFilterMapping() { return filterMapping; } public void setFilterMapping(int[] filterMapping) { this.filterMapping = filterMapping; } } }
Gruss TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
02.12.05 09:11 #6
So habe nun selbst etwas gefunden, hier die Lösung:
Code :1 2 3 4 5 6 7
pattern = Pattern.compile( suchbegriff, Pattern.CASE_INSENSITIVE ); matcher = pattern.matcher( text ); if ( matcher.find() ) { // text gefunden }
Ähnliche Themen
-
[VBS]Regular Expression
Von Dark Ranger im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 19.10.07, 09:59 -
Regular Expression
Von DrOverflow im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 2Letzter Beitrag: 23.01.07, 09:16 -
regular expression $-Suche
Von Soapp im Forum PHPAntworten: 4Letzter Beitrag: 09.08.06, 12:23 -
Regular Expression
Von time-master im Forum PHPAntworten: 7Letzter Beitrag: 29.01.06, 15:22 -
Regular Expression
Von Norbert Eder im Forum PHPAntworten: 4Letzter Beitrag: 28.04.04, 12:24





Zitieren

Login





